Hidden Steps¶
A hidden step runs a command silently — no prompt is shown, no text is typed, and no keypress is required. The command executes immediately and its output can be captured into a variable for use in later steps.
Basic usage¶
steps:
- text: "nono audit list --recent 1 --json"
hidden: true
capture:
name: session_id
json_path: "[0].session_id"
- text: "nono audit show {session_id}"
The first step runs invisibly and stores the session ID. The second step types
and executes normally, with {session_id} substituted in.
When to use hidden steps¶
Use hidden: true when a command is infrastructure for the demo rather than
part of the story — for example, fetching an ID or token that a later step
needs, without cluttering the screen with the lookup command.
For commands that should run before the demo starts entirely, prefer setup commands instead. Hidden steps are useful when the command must run at a specific point in the demo flow (e.g., after a previous step has created a resource).
Capturing JSON output¶
The json_path capture option is particularly useful with hidden steps:
steps:
- text: "myapp jobs create --json"
hidden: true
capture:
name: job_id
json_path: "id"
- text: "myapp jobs wait {job_id}"
- text: "myapp jobs logs {job_id}"
See Configuration for the full json_path
syntax reference.
How it works¶
When hidden: true is set:
- The prompt is not printed
- The command text is not typed
- No keypress or auto-advance wait occurs
- The command executes immediately
- Any
captureblock is still applied and the variable is stored - The step is otherwise invisible to the audience
Dry-run¶
Hidden steps are shown in --dry-run output with a [hidden] annotation so
you can verify they are in the right position: