Runbooks v0.24.0: Log Files, Sensitive Outputs, and Three Behavior Changes
Runbooks v0.24.0 landed on GitHub on October 2, 2026. It is a stability and usability release, and it ships three behavior changes that touch existing runbooks. The one most scripts will notice: the log_* helpers no longer write to stdout, so $(...) captures stay clean.
The full notes and downloads are on the GitHub release page.
Log output goes to files now
log_info, log_warn, log_error and log_debug used to print to stdout. That polluted command substitutions and broke piping JSON to tools like jq. They now append to the log file named by $RUNBOOK_LOG, and the app shows those lines in the block’s logs in the order the script wrote them.
New per level variables arrived too: $RUNBOOK_INFO_LOG, $RUNBOOK_WARN_LOG, $RUNBOOK_ERROR_LOG and $RUNBOOK_DEBUG_LOG take output from any command or language. A handy pattern from the notes:
PLAN_JSON=$(tofu show -json plan.tfplan 2>>"$RUNBOOK_ERROR_LOG")
Errors land in the log file while the JSON stays in the variable. Most scripts need no changes, but if you source logging.sh outside Runbooks, re-run the Local Development one-liner, since older copies still write to stdout (#280).
Auth secrets are masked
<AwsAuth> now publishes credentials as sensitive outputs, and <GitAuth>, <GitHubAuth> and <GitLabAuth> do the same for tokens. Scripts, generated files and other auth blocks still get the real values. View Outputs, Copy JSON, the script view and template previews show them masked. Instruction mode shows a <name> placeholder to paste instead (#285).
You can mark your own outputs sensitive too. Write sensitive: before a key in $RUNBOOK_OUTPUT:
echo "sensitive:API_TOKEN=$TOKEN" >> "$RUNBOOK_OUTPUT"
Note that logs are not scrubbed, so do not echo a sensitive value. Outputs written with this prefix are dropped by v0.23.0 and earlier.
The runbooks command returns right away
The installed runbooks command used to hold the terminal in the foreground. It now starts the app in the background and returns at once, like code .. Closing the terminal no longer quits the app (#287).
Upgrade note: reinstall the command when the welcome screen offers it, because a command installed by an earlier version keeps the old behavior. Use --verbose to keep the terminal attached. On Linux, the .deb package’s /usr/bin/runbooks still runs in the foreground.
Other changes worth knowing
- A new
<Iframe>block embeds a dashboard or local page, loaded only on click, in its own browser session (#289). Runbook assets are served from a separate origin per runbook, so one runbook’s pages cannot read another’s browser storage. - Cmd+F (Ctrl+F elsewhere) searches the runbook and expanded logs (#288).
- The log toolbar has a Copy prompt for LLM button that builds a prompt with the block ID and log file path (#282).
- Several bug fixes: template partials outside the block folder render again (#265), remote runbooks can use files outside their subdirectory (#318), and launching from a deleted folder no longer fails with a
SingletonLockerror (#281).
The code quality section is mostly internal tooling: the codebase now runs oxfmt, type aware oxlint, React Compiler lint, knip, and stricter TypeScript settings.
Where to get it
- Release page: Runbooks v0.24.0
- Repository: https://github.com/gruntwork-io/runbooks
- Tag:
v0.24.0