To prevent a recoverable snapshot, that is, a deleted standard snapshot that's in the recycle bin, from being permanently erased, recover the snapshot from the recycle bin before its retention period expires. When you recover a snapshot, it becomes a usable standard snapshot that you can use to create a new disk.
This document describes how to list, recover, and delete recoverable snapshots.
To learn more about the recycle bin, see Retain deleted resources in the recycle bin.
Before you begin
-
If you haven't already, set up authentication.
Authentication verifies your identity for access to Google Cloud services and APIs. To run
code or samples from a local development environment, you can authenticate to
Compute Engine by selecting one of the following options:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:
gcloud initIf you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
Install the Google Cloud CLI.
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
Required roles and permissions
To get the permissions that you need to manage recoverable snapshots, ask your administrator to grant you the following IAM roles on the project:
- Compute Instance Admin (
roles/compute.instanceAdmin) -
To connect to a VM that can run as a service account:
Service Account User (v1) (
roles/iam.serviceAccountUser)
For more information about granting roles, see Manage access to projects, folders, and organizations.
These predefined roles contain the permissions required to manage recoverable snapshots. To see the exact permissions that are required, expand the Required permissions section:
Required permissions
The following permissions are required to manage recoverable snapshots:
-
To recover a recoverable snapshot:
compute.recoverableSnapshots.recoveron the snapshot -
To view information about a recoverable snapshot:
compute.recoverableSnapshots.geton the snapshot -
To permanently delete a recoverable snapshot:
compute.recoverableSnapshots.deleteon the snapshot -
To list the recoverable snapshots in a project:
compute.recoverableSnapshots.liston the project
You might also be able to get these permissions with custom roles or other predefined roles.
Limitations
- Supported resources: Only standard snapshots are supported. Archive snapshots, instant snapshots, disks, and images are immediately permanently erased upon deletion.
- Name conflicts: Recovering a snapshot will fail if a standard snapshot that has the same name already exists and you don't provide a new name for the recovered snapshot. To recover such a snapshot, you must use the Google Cloud CLI or REST to specify a new name.
- Tag persistence: Tags that are attached to a snapshot before it is deleted are not retained if the snapshot is recovered from the recycle bin. You must add the tags back to the snapshot after you recover it from the recycle bin.
- Retention policy changes: Changes to the recycle bin retention policy don't apply to existing recoverable snapshots, that is, existing deleted standard snapshots that are in the recycle bin.
- Scheduled snapshots: If you recover a snapshot that was originally created on a schedule, then the snapshot is no longer part of the schedule and isn't automatically deleted after the duration specified by the schedule. Instead, Compute Engine retains the snapshot indefinitely until you manually delete the snapshot.
- Customer-managed encryption keys (CMEKs): If you revoke the CMEK that protects a recoverable snapshot, and you then recover the snapshot, you can't use the recovered snapshot to create a disk until you restore the key. If you don't recover the snapshot before the retention period expires, then Compute Engine permanently erases the snapshot.
- Recovery required before use: Recoverable snapshots are read-only. To use a recoverable snapshot to create a disk, you must first recover the standard snapshot from the recycle bin.
List recoverable snapshots
To view the recoverable snapshots that are in a project, use the Google Cloud console, the gcloud CLI, or REST.
Google Cloud console
In the Google Cloud console, go to the Snapshots page.
Click Recycle bin.
Click the Deleted Snapshots tab. The list of recoverable snapshots appears.
Each column lists details about the recoverable snapshots, including the following:
- Name: the name of the recoverable snapshot.
- Original snapshot name: the name of the original standard snapshot.
- Snapshot deletion time: the time when the original standard snapshot was deleted.
- Permanent deletion time: the time in the future when Compute Engine will permanently delete the recoverable snapshot.
gcloud CLI
To list all the snapshots in a project's recycle bin, use the
gcloud beta compute recoverable-snapshots list command.
To include additional information about each recoverable snapshot, use the
--format flag.
For example, the following command lists each recoverable snapshot in a project and includes details about each recoverable snapshot:
gcloud beta compute recoverable-snapshots list \ --project=PROJECT_ID \ --format="yaml(name, creationTimestamp, purgeTimestamp, originalResource)"
Replace PROJECT_ID with the ID of the project.
The output is a list of the recoverable snapshots in the project, similar to the following:
creationTimestamp: '2026-09-01T11:13:50.716-07:00'
name: data-disk-snapshot-20260805-qlb6lyqw
purgeTimestamp: '2026-09-06T11:13:50.609-07:00'
originalResource:
...
name: data-disk-snapshot-20260805
...
sourceDisk: projects/my-project/global/disks/data-disk
---
creationTimestamp: '2026-09-01T12:13:50.229-07:00'
name: disk-snapshot-20260901191347-s0c24h1m
purgeTimestamp: '2026-09-06T12:13:50.070-07:00'
originalResource:
...
name: disk-snapshot-20260901191347
...
sourceDisk: projects/my-project/global/disks/my-disk
---
The output lists the following key properties of each recoverable snapshot:
name: the name of the recoverable snapshot. To recover the snapshot, you must specify this name if you use the gcloud CLI or REST.creationTimestamp: the time when the original standard snapshot was deleted.purgeTimestamp: the time in the future when Compute Engine will permanently delete the recoverable snapshot.originalResource: an object that contains details about the original snapshot, including its name and source disk.
REST
Construct a GET request to the recoverableSnapshots list method.
GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/recoverableSnapshots/
Replace PROJECT_ID with the ID of the project.
The JSON response body contains a list of the recoverable snapshots in the project, similar to the following:
{
"kind": "compute#recoverableSnapshotList",
"id": "projects/PROJECT_ID/global/recoverableSnapshots/",
"items": [
{
"name": "prod-test-snapshot-20260905053732-uj731vz4",
"creationTimestamp": "2026-09-05T22:37:34.164-07:00",
"purgeTimestamp": "2026-09-12T22:37:32.918-07:00",
...
"originalResource": {
"id": "3004584137782651782",
"creationTimestamp": "2025-10-05T22:36:41.868-07:00",
"name": "prod-test-snapshot"
...
}
},
{
"kind": "compute#recoverableSnapshot",
"id": "8914891425536994162",
"name": "my-test-snapshot-20260906053732-uj731vz5",
"creationTimestamp": "2026-09-05T22:37:34.164-07:00",
"purgeTimestamp": "2026-09-12T22:37:32.918-07:00",
...
"originalResource": {
"id": "39904584137782651782",
"creationTimestamp": "2026-08-05T22:36:41.868-07:00",
"name": "my-test-snapshot"
...
}
}
]
}
The output lists the following key properties of each recoverable snapshot:
name: the name of the recoverable snapshot. To recover the snapshot, you must specify this name if you use the gcloud CLI or REST.creationTimestamp: the time when the original standard snapshot was deleted.purgeTimestamp: the time in the future when Compute Engine will permanently delete the recoverable snapshot.originalResource: an object that contains details about the original snapshot, including its name and source disk.
Find a recoverable snapshot by the name of the original snapshot
To find a recoverable snapshot so that you can recover it, you can use the name of the original snapshot. Recoverable snapshots have a unique name that Compute Engine generates when you delete the original snapshot.
To find the name of the recoverable snapshot, list the recoverable snapshots and filter by the original snapshot name.
You can use the Google Cloud console, the gcloud CLI, or REST.
Google Cloud console
In the Google Cloud console, go to the Snapshots page.
Click Recycle bin.
Click the Deleted Snapshots tab. The list of recoverable snapshots appears.
In the filter_list Filter field, click Enter property name or value. Select Original snapshot name from the list of properties.
Enter the original snapshot name in the Value field, and press Enter.
The Google Cloud console displays a list of recoverable snapshots that have an original snapshot with a name that matches the name you entered.
gcloud CLI
To find a recoverable snapshot by original snapshot name, use the
gcloud beta compute recoverable-snapshots list command. To filter
by the original snapshot name, use the --filter flag for the
originalResource.name property.
gcloud beta compute recoverable-snapshots list \ --project=PROJECT_ID \ --filter="originalResource.name:ORIGINAL_SNAPSHOT_NAME" \ --format="yaml(name, creationTimestamp, purgeTimestamp)"
Replace the following with the corresponding values:
PROJECT_ID: the ID of the project.ORIGINAL_SNAPSHOT_NAME: the original name of the snapshot.
The output is a list of the recoverable snapshots that have an original snapshot with a name that matches the original snapshot name you entered, similar to the following:
creationTimestamp: '2026-09-01T11:13:50.716-07:00'
name: disk-20260805-09550-us-central1-a-202-20260901181348-qlb6lyqw
purgeTimestamp: '2026-09-06T11:13:50.609-07:00'
---
creationTimestamp: '2026-09-01T12:13:50.229-07:00'
name: disk-20260805-09550-us-central1-a-202-20260901191347-s0c24h1m
purgeTimestamp: '2026-09-06T12:13:50.070-07:00'
---
creationTimestamp: '2026-09-01T13:13:51.060-07:00'
name: disk-20260805-09550-us-central1-a-202-20260901201348-ogybudsu
purgeTimestamp: '2026-09-06T13:13:50.904-07:00'
To filter by the creation or deletion time of the original snapshot, extend
the --filter expression:
- To filter by the original snapshot's creation time, add a condition
for
originalResource.creationTimestampto the--filterexpression. For example, to find the recoverable snapshots for an original snapshot that was created on or after a specific time:
--filter="originalResource.creationTimestamp >= 'CREATION_FILTER_TIMESTAMP' AND originalResource.name:ORIGINAL_SNAPSHOT_NAME"
Replace the following:
ORIGINAL_SNAPSHOT_NAME: the name of the original snapshot.CREATION_FILTER_TIMESTAMP: the timestamp for the filter, for example,2026-09-01T10:00:00. The timestamp is in local time.To filter by when the original snapshot was deleted, add a condition for
creationTimestampto the--filterexpression. For example, to find the recoverable snapshots for a specific original snapshot that was deleted on or after a specific time:
--filter="creationTimestamp >= 'DELETION_FILTER_TIMESTAMP' AND originalResource.name:ORIGINAL_SNAPSHOT_NAME"
Replace the following:
ORIGINAL_SNAPSHOT_NAME: the name of the original snapshot.DELETION_FILTER_TIMESTAMP: the timestamp for the filter, for example,2026-09-01T10:00:00. The timestamp is in local time.
REST
Construct a GET request to the
recoverableSnapshots.list method
using the filter query parameter.
GET 'https://compute.googleapis.com/compute/beta/projects/ PROJECT_ID/global/recoverableSnapshots?filter=originalResource.name:ORIGINAL_SNAPSHOT_NAME'
Replace the following with the corresponding values:
PROJECT_ID: the ID of the project.ORIGINAL_SNAPSHOT_NAME: the original name of the snapshot.
The response body is a list of the recoverable snapshots whose original snapshot name matches the original snapshot name you entered, similar to the following:
{
"kind": "compute#recoverableSnapshotList",
"id": "projects/PROJECT_ID/global/recoverableSnapshots/",
"items": [
{
"kind": "compute#recoverableSnapshot",
"id": "8914891425536994161",
"name": "prod-test-snapshot-20261006053732-uj731vz4",
"creationTimestamp": "2026-10-05T22:37:34.164-07:00",
"purgeTimestamp": "2026-10-12T22:37:32.918-07:00",
...
"originalResource": {
"name": "prod-test-snapshot",
...
}
}
]
}
Each object in the items array represents a recoverable snapshot and has the
following properties:
name: the name of the recoverable snapshot. To recover the snapshot, you must specify this name if you use the gcloud CLI or REST.creationTimestamp: the time when the original standard snapshot was deleted.purgeTimestamp: the time in the future when Compute Engine will permanently delete the recoverable snapshot.originalResource: an object that contains details about the original snapshot, including its name and source disk.
View information about a recoverable snapshot
To retrieve detailed information about a recoverable snapshot, such as its source snapshot or creation time, use the Google Cloud console, the gcloud CLI, or REST.
To find the name of a recoverable snapshot if you only have the original snapshot name, see Find the name of a recoverable snapshot.
Google Cloud console
In the Google Cloud console, go to the Snapshots page.
Click Recycle bin.
On the Deleted Snapshots tab, view the list of recoverable snapshots.
Each column lists details about a recoverable snapshot, including the following:
- Name: the name of the recoverable snapshot.
- Original snapshot name: the name of the original standard snapshot.
- Snapshot deletion time: the time when the original standard snapshot was deleted.
- Permanent deletion time: the time in the future when Compute Engine will permanently delete the recoverable snapshot.
gcloud CLI
To view information about a recoverable snapshot, use the
gcloud beta compute recoverable-snapshots describe command.
gcloud beta compute recoverable-snapshots describe RECOVERABLE_SNAPSHOT_NAME \ --project=PROJECT_ID
Replace the following with the corresponding values:
RECOVERABLE_SNAPSHOT_NAME: the name of the recoverable snapshot.PROJECT_ID: the ID of the project.
The output is a description of the recoverable snapshot, similar to the following:
creationTimestamp: '2026-09-01T13:13:51.626-07:00'
id: '2573728532034916112'
kind: compute#recoverableSnapshot
name: prod-test-snapshot-uj731vz4
originalResource:
name: prod-test-snapshot
...
storageBytesStatus: UP_TO_DATE
storageLocations:
- us
purgeTimestamp: '2026-09-06T13:13:51.493-07:00'
selfLink: ..
status: READY
The output includes the following key properties of the recoverable snapshot:
name: the name of the recoverable snapshot. To recover the snapshot, you must specify this name if you use the gcloud CLI or REST.creationTimestamp: the time when the original standard snapshot was deleted.purgeTimestamp: the time in the future when Compute Engine will permanently delete the recoverable snapshot.originalResource: an object that contains details about the original snapshot, including its name and source disk.
REST
To view information about a recoverable snapshot, make a GET request to the
recoverableSnapshots.get method.
GET 'https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/recoverableSnapshots/RECOVERABLE_SNAPSHOT_NAME'
Replace the following with the corresponding values:
PROJECT_ID: the ID of the project that contains the recoverable snapshot.RECOVERABLE_SNAPSHOT_NAME: the name of the recoverable snapshot.
The response is similar to the following:
{
"name": "prod-test-snapshot-uj731vz4",
"creationTimestamp": "2026-09-05T22:37:34.164-07:00",
"purgeTimestamp": "2026-09-12T22:37:32.918-07:00",
...
"originalResource": {
"name": "prod-test-snapshot",
...
}
}
The response body includes the following key properties of the recoverable snapshot:
name: the name of the recoverable snapshot. To recover the snapshot, you must specify this name if you use the gcloud CLI or REST.creationTimestamp: the time when the original standard snapshot was deleted.purgeTimestamp: the time in the future when Compute Engine will permanently delete the recoverable snapshot.originalResource: an object that contains details about the original snapshot, including its name and source disk.
Recover deleted snapshots
Before you recover a snapshot, consider the following:
- Tag persistence: Tags that are attached to a snapshot before it is deleted are not retained if the snapshot is recovered from the recycle bin. You must add the tags back to the snapshot after you recover it from the recycle bin.
- Scheduled snapshots: If you recover a snapshot that was originally created on a schedule, then the snapshot is no longer part of the schedule and isn't automatically deleted after the duration specified by the schedule. Instead, Compute Engine retains the snapshot indefinitely until you manually delete the snapshot.
- Name conflicts: Recovering a snapshot will fail if a standard snapshot that has the same name already exists and you don't provide a new name for the recovered snapshot. To recover such a snapshot, you must use the Google Cloud CLI or REST to specify a new name.
- Recoverable snapshots persist after recovery: recovering a snapshot doesn't delete the recoverable snapshot from the recycle bin. The recoverable snapshot persists in the recycle bin until the retention period expires.
- New creation time for the recovered snapshot: when you recover a snapshot, the creation time for the standard snapshot is the time you recovered it from the recycle bin and not the time when the snapshot was originally created.
Recover a snapshot from the recycle bin
To recover a deleted snapshot so that you can use it to create a new disk, you must first find the name of the recoverable snapshot. To do so, follow the instructions in Find the name of a recoverable snapshot.
When you know the name of the recoverable snapshot, use the Google Cloud console, gcloud CLI, or REST to recover the snapshot.
Google Cloud console
In the Google Cloud console, go to the Snapshots page.
Click Recycle bin.
Click the Deleted Snapshots tab. The list of recoverable snapshots appears.
Select the snapshot that you want to recover.
Click restore_from_trash Recover.
gcloud CLI
To recover a snapshot, use the
gcloud beta compute recoverable-snapshots recover command.
To recover a snapshot and keep its original name:
gcloud beta compute recoverable-snapshots recover \ RECOVERABLE_SNAPSHOT_NAME \ --project=PROJECT_ID
Replace the following with the corresponding values:
RECOVERABLE_SNAPSHOT_NAME: the name of the recoverable snapshot.PROJECT_ID: the ID of the project.
To recover a snapshot and specify a new name for the recovered snapshot, specify the new name with the
--snapshot-nameflag.gcloud beta compute recoverable-snapshots recover \ RECOVERABLE_SNAPSHOT_NAME \ --project=PROJECT_ID \ --snapshot-name=NEW_SNAPSHOT_NAME
Replace the following with the corresponding values:
RECOVERABLE_SNAPSHOT_NAME: the name of the recoverable snapshot.PROJECT_ID: the ID of the project.NEW_SNAPSHOT_NAME: the new name for the recovered snapshot.
REST
To recover a snapshot, make a POST request to the
recoverableSnapshots.recover method.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/recoverableSnapshots/RECOVERABLE_SNAPSHOT_NAME/recover
Replace the following with the corresponding values:
PROJECT_ID: the ID of the project.RECOVERABLE_SNAPSHOT_NAME: the name of the recoverable snapshot.
To recover a snapshot and specify a new name for the recovered snapshot,
specify the new name with the snapshotName field in the request body:
{
"snapshotName": "NEW_SNAPSHOT_NAME"
}
Replace NEW_SNAPSHOT_NAME with the new name for the
recovered snapshot.
To create a disk from the recovered snapshot, see Create a disk from a snapshot.
To add tags that were attached to the original standard snapshot, see Adding tags to a resource.
Delete a recoverable snapshot
You can permanently delete a snapshot from the recycle bin before its retention period expires with the Google Cloud console, gcloud CLI, or REST.
Google Cloud console
In the Google Cloud console, go to the Snapshots page.
Click Recycle bin.
In the Deleted snapshots tab, select the snapshot you want to permanently delete.
Click deleteDelete permanently.
gcloud CLI
To permanently delete a recoverable snapshot, use the
gcloud beta compute recoverable-snapshots delete command.
gcloud beta compute recoverable-snapshots delete RECOVERABLE_SNAPSHOT_NAME \ --project=PROJECT_ID
Replace the following with the corresponding values:
RECOVERABLE_SNAPSHOT_NAME: the name of the recoverable snapshot.PROJECT_ID: the ID of the project.
REST
To permanently delete a recoverable snapshot, make a DELETE request to the
recoverableSnapshots.delete method.
DELETE https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/recoverableSnapshots/RECOVERABLE_SNAPSHOT_NAME
Replace the following with the corresponding values:
PROJECT_ID: the ID of the project.RECOVERABLE_SNAPSHOT_NAME: the name of the recoverable snapshot.