Requesting a duration
When an application offers more than just Unlimited, the request form gains a Duration step. This works the same in Slack and in the App Hub. The user picks a duration alongside the app, the permissions and the reason. Everything else about the request is unchanged: the same approval policy applies, and provisioning happens the same way — automatically for apps with an integration, or via the application admin otherwise.If an app only offers Unlimited, no duration step appears. Users see the normal request form.
When the clock starts
The countdown starts when the access is actually granted — not when the request is submitted or approved. A 4-hour access that waits two days for an application admin to provision it still gives the user a full 4 hours from the moment it gets granted.One time-based access at a time
A user can only have one running time-based access per resource. If they already have a time-boxed grant for a resource, requesting another one with a duration is rejected, with a message asking them to resubmit without a duration. They can still request Unlimited access to the same resource — that’s how a temporary grant gets converted into a permanent one.What happens at expiry
AccessOwl checks for ended grants continuously and acts within about a minute of the window closing. What it does depends on what the user had before the temporary grant:- User had no access before
- User had access before
The access is removed. AccessOwl creates a revocation with the reason “Time-based access ended” — deprovisioning automatically if the app has an integration, or notifying the application admin to remove it.
Notifications
The user and their manager are notified in Slack when a time-based access expires, and told whether the access was removed entirely or reduced back to the user’s previous permissions. Users who finish early don’t have to wait for the timer. They can revoke their own access from the Slack home tab at any point.When the access changes before expiry
AccessOwl re-evaluates a running time-based grant as soon as the user’s access to that resource changes, whether someone edited the permissions directly, an integration sync brought in a change, or the access was removed. It does not wait for the expiry to find out.
In all of these cases the access itself is left untouched.
Tracking time-based access
Time-boxed grants are marked as such wherever access is listed, together with when they expire:- My Requests in the App Hub, for a user’s own accesses
- The application’s access list, for admins
- Access reviews, so reviewers can see a permission is already set to expire and don’t need to act on it
- CSV exports of access requests and revocations, which include the duration and expiry columns
FAQ
Can I change the duration after a request was submitted?
Can I change the duration after a request was submitted?
No. The duration is fixed when the request is created. To change it, revoke the access and submit a new request with the duration you want.
Can I extend a time-based access before it expires?
Can I extend a time-based access before it expires?
Not directly. Submit a new request for the same resource with Unlimited to make the access permanent, or wait for the current grant to expire and request a new time-boxed one.
What if the user already had exactly the permissions they requested?
What if the user already had exactly the permissions they requested?
Then nothing was actually granted, and no expiry is scheduled. The user keeps the access they already had.
What happens if the duration runs out while the request is still pending?
What happens if the duration runs out while the request is still pending?
Nothing — the clock only starts once the access exists. A pending or unapproved request has no expiry attached to it yet.
Does the API support time-based access?
Does the API support time-based access?
Access requests returned by the API include
duration (an ISO 8601 duration such as PT1H or P7D) and expires_at, and applications expose their configured time_based_access_durations in the same format. Creating a time-based request through the API is not supported — use Slack or the App Hub.
