Skip to main content
orphan · gcp

Stopped Vertex AI notebooks still paying for their disks

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

A stopped Vertex AI notebook stops billing compute but keeps billing its boot and data disk every month. ZopNight prices exactly that disk residual and, because the orphan category is exempt from the $5 materiality floor, even a small leftover charge ships as a recommendation rather than being dropped.

Signal and threshold

How ZopNight evaluates Stopped Vertex AI notebooks still paying for their disks.
Field Value
Rule IDsRC-1213
Categoryorphan
Severitylow
Metricnone — pure configuration read
Sourcevertex_notebook.go

What a stopped notebook still bills

Stopping a Workbench notebook ends the vCPU, GPU, and RAM charges; that part worked. What continues is the persistent disk underneath: boot volume plus data volume, billed at standard PD rates for as long as the stopped instance exists. Data scientists stop notebooks when a project pauses and rarely circle back; the disks then bill for months. The state gate is strict: the instance’s status must resolve to STOPPED, read from the resource’s first-class status field with a metadata fallback, and anything else abstains.

The disk is not a separate resource

On a GCE VM, the disk is discovered and priced as its own resource, so a stopped VM’s disk waste surfaces through disk-level rules. A Workbench notebook’s disk is not separately discovered (it exists only inside the notebook’s own record), so ZopNight’s cost calculation zeroes the compute portion for a STOPPED notebook and prices the disk from its size and the ingested PD rate. The monthly figure on this recommendation is the disk residual, not a percentage of old compute spend.

Small savings ship anyway

Cost recommendations under $5/month are normally dropped as noise. Orphan-category findings are exempt from that floor, deliberately: a $3 disk on a notebook nobody will ever restart is still pure waste, and a fleet of forgotten notebooks is many such $3 disks. Deleting the instance eliminates the entire residual, taking the optimized cost to $0.

Find stopped instances

Terminal window
gcloud notebooks instances list --location us-central1-a \
--filter="state=STOPPED" --format="table(name,state,updateTime)"

The deletion itself is covered by notebooks.instances.delete within roles/notebooks.admin.

Export before you delete

The disk usually holds the only copy of the notebooks. Push anything worth keeping to GCS or a Git remote first, then delete the instance. For the replacement workflow, prefer Workbench instances with idle shutdown enabled. The sibling rule RC-1235 exists because so many are created without it.

The rule abstains when the state is anything but STOPPED or when no positive disk residual could be priced. Absent disk size or a missing PD rate produces silence, never a guessed figure.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

417 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

417 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·