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

# roark simulation plan update

> Update a run plan

Updates an existing simulation run plan by its ID.

```bash Synopsis theme={"theme":{"light":"everforest-light","dark":"everforest-dark"}}
roark simulation plan update <plan-id> [options]
```

> [!NOTE]
>
> Calls `PUT /v1/simulation/plan/{planId}`

## Arguments

**plan-id** `string` *required*

The ID of the run plan to update.

## Options

**--is-hidden** `switch`

Whether this plan is hidden from GET /v1/simulation/plan. A run started without `saveAsPlan` creates a hidden plan to carry it. Send `{ "name": "...", "isHidden": false }` to keep that configuration as a reusable plan, which is what the app does when you save a one-off run.

**--name** `string`

Name of the run plan.

**--description** `string`

Description of the run plan.

**--direction** `string`

Direction of the simulation (INBOUND or OUTBOUND). One of `INBOUND`, `OUTBOUND`

**--iteration-count** `integer`

Number of iterations to run for each test case (1-10000).

**--max-concurrent-jobs** `integer`

Maximum number of concurrent simulation jobs.

**--max-simulation-duration-seconds** `integer`

Maximum duration in seconds for each simulation.

**--silence-timeout-seconds** `integer`

Timeout in seconds for silence detection.

**--max-no-response-retries** `integer`

How many more times to run a test case when the agent under test never responds: it never speaks on a call or never replies in a chat (0-10). 0 turns retries off. Failed checks and failures on Roark’s side are never retried. Each retry is a separate attempt, billed like any other, so a plan retrying N times can place up to N + 1 calls per test case. Every silent attempt stays on the run with its own call; the run settles once each test case has a final attempt, and the agent never spoke verdict is judged on each test case’s last attempt.

**--no-response-retry-backoff-seconds** `integer`

Seconds a retry waits before it dials (30-600). Only used when `maxNoResponseRetries` is above 0.

**--end-call-phrases** `array`

Phrases that trigger end of call. Empty array disables the feature. Repeatable.

**--end-call-reasons** `array`

Semantic conditions that trigger end of call. The LLM evaluates the conversation against these conditions. Empty array disables the feature. Repeatable.

**--execution-mode** `string`

Execution mode (PARALLEL or SEQUENTIAL). One of `PARALLEL`, `SEQUENTIAL_SAME_RUN_PLAN`, `SEQUENTIAL_PROJECT`

**--scenarios** `array`

Deprecated: use `flows` instead. Replaces the scenarios on this run plan. Omit to leave them unchanged; send an empty array to detach them all, which is how a scenario-based plan is moved over to flows.

**--flows** `array`

Replaces the customer flows attached to this run plan. Omit to leave them unchanged; send an empty array to detach them all.

**--personas** `array`

Personas to include in this run plan.

**--agent-endpoints** `array`

Agent endpoints to include in this run plan.

**--metrics** `array`

Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`.

**--enrich-with-live-conversation** `switch`

Whether to merge the customer's own live recording into each simulation of this plan.

**--include-flow-metrics** `switch`

Whether to also collect each attached flow's own metrics, on top of this plan's list.

**--include-automatic-metrics** `switch`

Whether to let the run add metrics by itself off the attached flows. See `POST /v1/simulation/plan`.

**--comparison-property** `string`

The property this plan investigates. Send `null` to clear the comparison; omit the field to leave it unchanged. See `POST /v1/simulation/plan`. The pair moves together. Sending `comparisonProperty` without `comparisonBaseline` keeps the stored baseline when the property is unchanged and the baseline is still one of the values being run. Otherwise it becomes the new property's norm, or `null` when that norm is not being run either, because a baseline is a value of one specific property. One of `ACCENT`, `AGE`, `BACKGROUND_NOISE`, `BACKGROUND_NOISE_VOLUME`, `BASE_EMOTION`, `CONFIRMATION_STYLE`, `GENDER`, `INTENT_CLARITY`, `LANGUAGE`, `INTERRUPTION`, `MEMORY_RELIABILITY`, `RESPONSE_TIMING`, `SPEECH_CLARITY`, `SPEECH_PACE`

**--comparison-baseline** `string`

The reference value, shown first in the results. See `POST /v1/simulation/plan`. A real value cannot be sent on its own: the property it belongs to decides which values are legal, and an omitted property means "leave unchanged", which this endpoint cannot check a baseline against. Send `comparisonProperty` with it, or get a `400`. `null` on its own IS allowed, and clears just the baseline while leaving the property set. Nothing needs validating when clearing, and a property with no baseline is a real state: the report falls back to that property's own norm, and `GENDER` has no norm to fall back to.

**--comparison-values** `array`

The arms to run. See `POST /v1/simulation/plan`. Omitting it keeps the arms the plan already has, pins included, so an edit that only renames the plan never widens a sweep you deliberately narrowed, and never multiplies what it costs. Send it with `comparisonProperty` and `flows`, which the arms are rebuilt from.

## Example

```bash theme={"theme":{"light":"everforest-light","dark":"everforest-dark"}}
roark simulation plan update <plan-id>
```

Every command also takes the [global options](/cli-reference/overview.md#global-options) and sets one
of the [exit codes](/cli-reference/overview.md#exit-codes).


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