# TSR0001: '@ts-r-unsafe' needs a reason: write '// @ts-r-unsafe: <why this is safe>'.

> A '@ts-r-unsafe' escape hatch has no reason. Write the reason after a colon: '// @ts-r-unsafe: <why this is safe>'.

## What it means

`// @ts-r-unsafe` is sound mode's only escape hatch: on its own line it suppresses sound-mode diagnostics (TSR codes only) that start on the next line. The reason is required, so every hatch says why the code is safe. A hatch without one suppresses nothing, so the error it was meant to hide is reported too.

## Example

```ts
// A hatch must give a reason; this one suppresses nothing.
// @ts-r-unsafe // @expect TSR0001
const el = document.getElementById("app")!; // @expect TSR0301
export const tag: string = el.tagName;
```

## How to fix

- Add the reason after a colon: `// @ts-r-unsafe: the element is in the static HTML`.
- Limit it to the rules you mean: `// @ts-r-unsafe S-03: <reason>`.
- Better, fix the underlying sound-mode error so no hatch is needed.

Sound mode is defined in [design record 0007](https://github.com/Webb-Ventures/typescript-rust/blob/main/docs/design/0007-sound-mode.md) (accepted 2026-10-15).

Source: https://ts-r.dev/errors/TSR0001/
