Recover blocked deletions
For installation operators when dashboard cleanup cannot finish. This tool accesses the main database directly; it does not use team API credentials or reset databases.
Confirming cleanup records work you have already verified. It does not remove files from an unreachable host. Never confirm just to clear a warning or delete rows by hand.
Select the installation
Run from a source checkout with dependencies installed:
- SQLite:
DEVPUSH_DATABASE_PATH, an absolute path to an existing file. - libSQL:
DEVPUSH_DATABASE_URLandDEVPUSH_DATABASE_AUTH_TOKEN. - D1: add
--cloudflare, using the intended account/main binding and Wrangler authentication.DEVPUSH_WRANGLER_CONFIGselects another configuration.
Inspect
pnpm cleanup:recover list
pnpm cleanup:recover inspect project PROJECT_ID
pnpm cleanup:recover inspect job JOB_ID
pnpm cleanup:recover inspect artifact ARTIFACT_IDInspection also accepts team and server. Reports include a revision required for changes. Lists stop at 101 rows; inspect specific IDs if truncated. Keep reports private.
Choose an action
retry-job JOB_ID: retry unsuccessful terminal container cleanup after restoring connectivity. It does not replay deployments/backups/restores or bypass volume retention.cleanup-project PROJECT_ID: queue normal cleanup for a deleted project's deliberately retained runtimes.confirm-job JOB_ID: record verified manual completion of its external effects. Container cleanup requires routes/containers removed; purge also requires volumes removed. Archive references need separate confirmation.confirm-artifact ARTIFACT_ID: forget an archive reference after verifying deletion of the exact object using its location/key/checksum. This does not delete the object.
Preview, then apply
pnpm cleanup:recover retry-job JOB_ID --revision REVISION \
--operator OPERATOR --reason "Agent reconnected; retry container cleanup"Without --apply, this only previews. Add --apply after reviewing it. Each change verifies the current revision and records evidence atomically; concurrent changes reject stale requests.
Running work normally blocks confirmation. Stale container-cleanup claims have a one-hour exception, but an unreachable agent alone is never proof of removal. Reconnect/retry, or stop/drain the agent and verify manual cleanup or permanent host destruction first. There is no force-delete bypass.