> ## Documentation Index
> Fetch the complete documentation index at: https://intunedhq.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Pause tracing

> [!NOTE]
>
> This feature is in **preview**. The API may change before general availability. To try it out, contact [support@intunedhq.com](mailto:support@intunedhq.com) and we'll enable it for your workspace.

Stop Intuned from recording part of an attempt. While tracing is paused, the browser trace, screenshots, and automation logs are not captured—so sensitive values your automation types or reads never reach a stored trace.

Use it around the few lines that touch secrets: filling a password, entering a one-time code, or reading a record you aren't allowed to retain.

```typescript theme={null}
import { withTracingPaused } from "@intuned/runtime";

await withTracingPaused(async () => {
  await page.getByLabel("Password").fill(params.password);
  await page.getByRole("button", { name: "Sign in" }).click();
});
```

> [!NOTE]
>
> Pausing tracing is narrower than turning tracing off. [`saveTrace`](https://intunedhq.com/docs/main/05-references/intuned-json#param-save-trace) discards the trace for a whole Run, which also removes the trace you need to debug the other 99% of the automation. Pause when you only need a gap.

## Available helpers

* [`withTracingPaused`](#withtracingpaused) — Run a block of code with tracing paused
* [`pauseTracing`](#pausetracing) — Pause tracing until it is resumed
* [`resumeTracing`](#resumetracing) — Resume tracing

## Function reference

### withTracingPaused

```typescript theme={null}
import { withTracingPaused } from "@intuned/runtime";

function withTracingPaused<T>(callback: () => Promise<T>): Promise<T>;
```

Runs `callback` with tracing paused and resumes tracing when it finishes. Tracing resumes even if the callback throws, so a failure in the middle of a sensitive step can't leave the rest of the attempt unrecorded.

Prefer this form. Reach for [`pauseTracing`](#pausetracing) only when the sensitive work spans function boundaries—for example, pausing in a hook and resuming in your automation.

**Parameters**

**callback** `() =\> Promise\<T\>` *required*

The code to run with tracing paused.

**Returns**

Returns whatever `callback` returns.

**Example**

```typescript theme={null}
import { withTracingPaused } from "@intuned/runtime";
import { TOTP } from "totp-generator";

const token = await withTracingPaused(async () => {
  const code = TOTP.generate(params.secret, { digits: 6 }).otp;
  await page.getByLabel("One-time Password").fill(code);
  await page.getByRole("button", { name: "Login" }).click();
  return code;
});
```

### pauseTracing

```typescript theme={null}
import { pauseTracing } from "@intuned/runtime";

function pauseTracing(): void;
```

Pauses tracing for the current attempt until [`resumeTracing`](#resumetracing) is called. Calling it while tracing is already paused does nothing.

> [!WARNING]
>
> If your code throws between `pauseTracing` and `resumeTracing`, tracing stays paused for the rest of the attempt and you lose the trace for everything after that point. Use `try`/`finally`, or use [`withTracingPaused`](#withtracingpaused) instead.

**Returns**

Returns `void`.

**Example**

```typescript theme={null}
import { pauseTracing, resumeTracing } from "@intuned/runtime";

pauseTracing();
try {
  await page.getByLabel("SSN").fill(params.ssn);
} finally {
  resumeTracing();
}
```

### resumeTracing

```typescript theme={null}
import { resumeTracing } from "@intuned/runtime";

function resumeTracing(): void;
```

Resumes tracing for the current attempt. Calling it while tracing is already active does nothing.

**Returns**

Returns `void`.

## What pausing covers

While tracing is paused:

* **Browser trace** — No actions, DOM snapshots, or network requests are recorded. The trace viewer shows a gap.
* **Screenshots** — No screenshots are captured, including the ones taken automatically around actions.
* **Automation logs** — Anything your code writes to stdout or stderr is dropped rather than stored on the attempt.

What is still recorded:

* The Run and Attempt records themselves—status, timing, and retry history.
* Your automation's **return value**, and the Run's `parameters`. Tracing has no effect on either. To keep a value out of the Run record entirely, use [ephemeral parameters](https://intunedhq.com/docs/main/05-references/runtime-sdk-typescript/ephemeral-parameters.md).
* **Errors.** A thrown error's message and stack trace are still stored on the attempt, even if it was thrown while tracing was paused.

> [!WARNING]
>
> Never put a secret in an error message. Error details are stored on the attempt regardless of tracing state.

## Behavior notes

* **Nesting works.** Nested `withTracingPaused` blocks are safe; tracing resumes when the outermost block exits.
* **Scope is the attempt.** Tracing state resets at the start of every attempt, so a retry always begins with tracing active.
* **Local development included.** The helpers behave the same under `intuned dev`, so a locally captured trace has the same gaps a deployed one would.
* **Ephemeral parameters pause automatically.** [`getEphemeralParameter`](https://intunedhq.com/docs/main/05-references/runtime-sdk-typescript/ephemeral-parameters#getephemeralparameter) pauses tracing on your behalf before it returns a value.

## Related

* [Ephemeral parameters](https://intunedhq.com/docs/main/05-references/runtime-sdk-typescript/ephemeral-parameters.md) — Pass secrets to a Run without storing them.
* [Monitoring and traces](https://intunedhq.com/docs/main/02-features/observability-monitoring-logs.md) — How traces and attempt logs are captured and viewed.
* [Intuned.json reference](https://intunedhq.com/docs/main/05-references/intuned-json.md) — `saveTrace` defaults for dev and deployed runs.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.