---
title: TeardownOptions
description: What a teardown should delete beyond the VM itself.
---

What a teardown should delete beyond the VM itself.

Both deletions are opt-in, because both destroy something a caller may still want: the
image is reusable across runs, and the log group is where a failed build's only evidence
lives.

## Properties

### deleteAttempts?

```ts
optional deleteAttempts?: number;
```

***

### deleteBackoff?

```ts
optional deleteBackoff?: number;
```

***

### deleteImage?

```ts
optional deleteImage?: boolean;
```

***

### deleteLogGroup?

```ts
optional deleteLogGroup?: boolean;
```

**Names** the group in `report.undeleted` rather than deleting it — CloudWatch is not
in the core's dependency set, and reporting a leak beats reporting a clean teardown
over one.

***

### waitForTerminated?

```ts
optional waitForTerminated?: number | boolean;
```

`false` by default: the caller is on the way out, and a teardown that blocked five
minutes on a state nobody reads is five minutes of a CI job. The report then honestly
ends in `"TERMINATING"`. `true` waits for TERMINATED up to the core's lifecycle default;
a number of seconds waits up to that instead.

## Provenance

This page is generated from `bindings/microvms-js/index.d.ts` by TypeDoc 0.28.20 and typedoc-plugin-markdown 4.13.1, run from `site/scripts/gen-reference.mjs` on every `pnpm run sync`, so an edit made here is overwritten by the next run.

To change the page, change the doc comment in the binding's Rust source, then regenerate the declarations with `mise run dts`. `mise run dts:check` fails when the committed file no longer matches the source.