# Unused Custom Compute Engine Images | Cloud Efficiency Hub

Canonical: https://www.pointfive.co/efficiency-hub/inefficiencies/unused-custom-compute-engine-images

Custom images are billed for storage for as long as they exist, whether or not any VM or disk is ever created from them again.

By: PointFive

Updated: 2026-09-28

[Cloud Efficiency Hub](https://www.pointfive.co/efficiency-hub) 

The short version

Custom images are billed for storage for as long as they exist, whether or not any VM or disk is ever created from them again.

PointFive Research

Cloud cost research at PointFive

GCP service

[GCP Compute Engine](https://www.pointfive.co/efficiency-hub/cloud-services/gcp-compute-engine)

Category

[Storage](https://www.pointfive.co/efficiency-hub/service-category/storage)

Reference

CER-0465

Type

Excessive Data Retention

## Explanation

Why the waste happens and who it affects.

Image build pipelines (Packer, CI jobs, golden-image processes) typically publish a new image version for every OS patch cycle or application release, and old versions are often never deleted. Images imported for migrations or created as ad hoc backups before changes accumulate the same way.

Deprecating an image does not remove it: Google's image management guidance notes that even images marked DELETED keep their data until an explicit delete command is sent. The result is a growing library of superseded images per image family, each billed every month.

## Billing model

The pricing dimensions that drive this cost.

Rates depend on the image storage location.

Custom image storage

Billed per GiB of stored image data for as long as the image exists

Deprecation states

DEPRECATED, OBSOLETE and DELETED states control launch behavior only; the image is billed until it is actually deleted

Machine images

Machine images are a separate stored resource billed by size and storage location

No transfer fee

Creating images, and creating disks from images, has no network transfer fee

## How to detect

4 checks to find it in your estate.

- Review the Idle custom image recommender (google.compute.image.IdleResourceRecommender, "Remove unused images"); it flags images that were not used to create a disk for at least 15 days and are not referenced by any instance template

- List images per family with gcloud compute images list --no-standard-images --show-deprecated and sort by creationTimestamp to find superseded versions

- Include images in DEPRECATED, OBSOLETE or DELETED state, which are hidden from default listings but still billed

- Check which images are referenced by instance templates, MIGs, Terraform or other projects (shared images) before deleting

## How to fix

4 ways to remove the waste.

- Delete superseded image versions with gcloud compute images delete, keeping only the versions needed for rollback (for example the last few per family)

- Add retention logic to image build pipelines so each new release deprecates the previous image and deletes versions beyond the rollback window

- Follow up on deprecations with an explicit delete; setting the DELETED state alone does not remove the data

- Delete one-off pre-change and migration images once the change is validated, and prefer machine images or snapshots with their own retention for short-term rollback copies

## Documentation

Vendor references for pricing and configuration.

- [View and apply idle resources recommendations  docs.cloud.google.com](https://docs.cloud.google.com/compute/docs/viewing-and-applying-idle-resources-recommendations)

- [Image management best practices  docs.cloud.google.com](https://docs.cloud.google.com/compute/docs/images/image-management-best-practices)

- [Disk and image pricing  cloud.google.com](https://cloud.google.com/compute/disks-image-pricing)

- [Create custom images  docs.cloud.google.com](https://docs.cloud.google.com/compute/docs/images/create-custom)

## Related inefficiencies

[Browse the library](https://www.pointfive.co/efficiency-hub)

- GCP Compute Engine  CER-0466

### [Orphaned or Over-Retained Compute Engine Disk Snapshots](https://www.pointfive.co/efficiency-hub/inefficiencies/orphaned-or-over-retained-compute-engine-disk-snapshots)

Standard and archive snapshots of Compute Engine disks are not deleted when their source disk is deleted, and they keep billing for stored data until someone deletes them. Snapshot schedules make this worse by default: a schedule's...

Storage

- GCP Compute Engine  CER-0461

### [Unattached Persistent Disk or Hyperdisk Volume](https://www.pointfive.co/efficiency-hub/inefficiencies/unattached-persistent-disk-or-hyperdisk-volume)

Persistent Disk and Hyperdisk volumes are billed for their full provisioned size until they are deleted, whether or not any VM is using them. Disks become detached and forgotten in predictable ways: a VM is deleted with auto-delete turned...

Storage

- GCP Compute Engine  CER-0463

### [Long-Stopped Compute Engine VM Retaining Disks and Static IPs](https://www.pointfive.co/efficiency-hub/inefficiencies/long-stopped-compute-engine-vm-retaining-disks-and-static-ips)

Stopping a Compute Engine VM ends vCPU and memory charges, which is why stopping is the usual response to an unneeded machine. But the VM's resources remain: its boot and data disks keep billing for their full provisioned size, a static...

Storage

---
Source: the public page above. Product screenshots and illustrative interfaces are examples, not live customer data.

