# Renew Waiver

Use the Renew Waiver page to extend the expiry date of an existing waiver.

Access the page from either of the following locations:

- Go to _Waivers_, click on _Renew_ (  ) icon in the Actions column.
- Go to _Repository Details_ \> _Policy Violations_ \> _Applicable Waivers_, click on _Renew_ (  ) icon.
- Go to _Bulk Waivers_ \> _Applicable Waivers_, click on _Renew_ (  ) icon.
- Go to _Waiver_ \> _Waiver Detail View_, click _Renew Waiver_ button at the top right.

The Renew Waiver button is shown only when the user has the _Remediation_ \> `Waive Policy Violations` permission enabled in their roles.

The page displays the following read-only information from the existing waiver:

- Policy
- Scope
- Component, if applicable
- Current expiry date
- Updated By

The page displays the following renewal fields:

| Field | Description |
| --- | --- |
| New Expiry Date | Required. Select Never, 7 Days, 14 Days, 30 Days, 60 Days, 90 Days, 120 Days, or Custom. |
| Reason | Optional. Select a configured waiver reason. |
| Comment | Optional. Enter additional details. Maximum: 1000 characters. |

## Renew a waiver

1. Select a new expiry value.
2. Optional: Select a reason.
3. Optional: Enter a comment.
4. Click Renew.

Firewall displays the following message while processing the request:

"_Renewing waiver…_"

After a successful renewal, Firewall returns you to the previous page and displays the following notification:

"_Waiver renewed successfully._"

If the renewal fails, Firewall displays an error message on the page.

If you attempt to leave the page with unsaved changes, Firewall displays a confirmation dialog.

## Renewal behavior

If the waiver already has no expiry date and _Never_ is selected, Firewall displays the following message and disables the _Renew_ button:

"_Waiver already has no expiry date. Select a new expiry to renew._"

Firewall displays contextual renewal messages based on the waiver state:

| Waiver state | Message |
| --- | --- |
| Active waiver | `Extends current expiry by X days → YYYY-MM-DD` |
| Expired waiver | `Renews from today for X days → YYYY-MM-DD` |
| Never-expiring waiver | `New expiry in X days → YYYY-MM-DD` |

If you select an invalid or past custom date, Firewall displays the following validation error and disables the Renew button:

"_Date must be in the future_"

## Renew Waiver API

Use the following endpoint to renew waivers:

```
POST /api/v2/firewall/waivers/renew
```

The request accepts:

- One or more waiver IDs
- A new expiry time in ISO 8601 format, or `null` for waivers that never expire
- Optional comment
- Optional reason ID

The response includes:

- Renewed waiver count
- Not-found waiver count
- Per-waiver error messages

If the caller does not have the `WAIVE_POLICY_VIOLATIONS` permission, the API returns HTTP `403 Forbidden`.

## Search results

No results found.
