Stopped Vertex AI notebooks still paying for their disks
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
| Field | Value |
|---|---|
| Rule IDs | RC-1213 |
| Category | orphan |
| Severity | low |
| Metric | none — pure configuration read |
| Source | vertex_notebook.go |
Where it applies
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
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.