---
url: https://scruple.dev/rules/resources/require-cleanup-on-failure.md
description: Require cleanup that is safe on failure.
---

# resources/require-cleanup-on-failure

Require cleanup that is safe on failure.

## What it checks

Cleanup must run when intervening work fails, using managed lifetimes, finally blocks, scoped helpers, or ownership transfer.

## Rule metadata

* Package: `@scruple/resources`
* Category: Resource lifecycle
* Tags: cleanup, exceptions, finally
* Default threshold: `0.9`
* Minimum confidence: `0.7`

## Examples

### Reported

```ts
const socket = await connect(); await send(socket); socket.close();
```

### Accepted

```ts
const socket = await connect(); try { await send(socket); } finally { socket.close(); }
```
