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

# nora flows settings

> Read and patch Flow-level settings — approvals webhook and defaults.

`flows settings` reads and updates the Flow-level knobs — the ones under **Flow settings** in the app.

## Commands

| Command                                | Description                                |
| -------------------------------------- | ------------------------------------------ |
| `flows settings get [slug]`            | Print current settings as JSON.            |
| `flows settings update [slug] [flags]` | Patch settings. Only fields passed change. |

Slug is optional — defaults to the pinned Flow (see [`flows use`](/cli/flows)).

## `flows settings get`

```bash theme={null}
nora flows settings get support-agent
```

Emits the settings JSON. Fields you'll see:

* `approvalWebhookUrl` — external webhook the platform POSTs approval requests to. Empty when unset (approvals surface only in-app).
* Runtime defaults inherited by blocks (limits, memory retention, retention policies).

Add `--json` for pipe-friendly output (default is human-readable summary).

## `flows settings update`

```bash theme={null}
nora flows settings update support-agent \
  --set-approval-webhook https://example.com/hooks/nora
```

Only flags you pass change; unset flags stay as they are.

### Available flags

* `--set-approval-webhook <url>` — where approval requests are POSTed. Use `''` (empty string) to clear.
* `--set-global-max-turns <N>` — cap total tool-call round-trips per run.
* `--set-global-max-tokens <N>` — cap total tokens per run.
* `--set-global-max-cost <USD>` — cap dollars per run.
* `--set-global-timeout-s <N>` — wall-clock cap per run.

Flag names may extend as new settings ship. `nora flows settings update --help` shows the current set.

## Common recipes

### Point approvals at an external webhook

```bash theme={null}
nora flows settings update support-agent \
  --set-approval-webhook https://slack-approvals.internal/hooks/nora
```

Once set, the app still shows the Approvals queue — but every new approval also POSTs to the webhook so your external system can route it.

Payload shape: `nora approvals describe <slug>` prints the exact contract.

### Clear the webhook

```bash theme={null}
nora flows settings update support-agent --set-approval-webhook ''
```

Approvals go back to in-app only.

### Set global caps for cost control

```bash theme={null}
nora flows settings update support-agent \
  --set-global-max-cost 0.50 \
  --set-global-max-turns 20
```

Both apply to every run of the Flow. Per-block caps still work; the stricter of block and global wins.

## Piping settings between Flows

Since `flows settings get --json` emits parseable JSON, you can migrate settings from one Flow to another with `jq`:

```bash theme={null}
# Copy webhook from one flow to another
url=$(nora flows settings get flow-a --json | jq -r '.approvalWebhookUrl')
nora flows settings update flow-b --set-approval-webhook "$url"
```

## Where settings apply

Settings apply to:

* **Every run** of the Flow, in every version.
* **Currently-live** and future-published versions alike (settings aren't versioned with the Flow payload — they're workspace-level per Flow).

That means changing a setting takes effect immediately. If you need audited change control on settings, use a workspace policy that gates the CLI.

See also:

* [`nora vars`](/cli/vars) — Flow-level *variables* (interpolatable in blocks). Settings are runtime knobs; vars are content.
* [`nora approvals`](/cli/approvals) — decide approval rows from the CLI.
* [Approve & deploy](/reliable/optimization/approve) — the concept doc for approvals.
