blowhorn shared flags

The flags most blowhorn commands take, and its exit codes.

Taken before the command word (blowhorn <flag> <command>) and by every command:

Flag Type Default Description
--pace string Pace of the random delays between actions, accepted by every blowhorn command and before the command word as well ('blowhorn --pace slow post ...'): a preset name (fast/normal/slow) or a numeric multiplier (e.g. 0.5, 2.0). Resolved as CLI flag, then BLOWHORN_PACE, then defaults.pace in .blowhorn.yaml (normal when none is set). Commands that never sleep accept it and say so in their own --help

Taken by most commands; a command's own page lists any it describes differently:

Flag Type Default Description
--chrome-launch string How this run reaches Google Chrome, for one run: 'extension' (the default) drives Chrome through the Blowhorn Chrome extension and starts no Playwright Chrome; 'persistent' launches Blowhorn's own Chrome from chrome.automation_data_dir with the mapped profile directory inside it; 'cdp' attaches to a running Chrome that is ready per 'blowhorn chrome status' (daily Chrome asks you to Allow once per connection; a dedicated attach-chrome started with 'blowhorn chrome attach-chrome start' does not); and 'auto' attaches when Chrome is ready and launches otherwise. This flag, then BLOWHORN_CHROME_LAUNCH, then BLOWHORN_BROWSER_DRIVER, then defaults.chrome.launch_mode in .blowhorn.yaml, selects the driver a run actually uses. Any other value is refused before anything runs. Every browser run needs the profile mapped with 'blowhorn chrome map' first, in any mode. A scheduler tick's jobs each resolve their own mode (this flag on the tick, BLOWHORN_CHROME_LAUNCH, the job's driver mode, BLOWHORN_BROWSER_DRIVER, defaults.chrome.launch_mode, then the extension)
--config string Path to global config file (default: ./.blowhorn.yaml)
--dry-run boolean false Simulate execution without making changes
--exclude, --e string Profiles to exclude when using --profile all (comma delimited); alias: --e; use 'none' or an empty string to clear configured defaults
--headed boolean false Keep the browser window visible and in front (overrides --headless) so a person can finish a sign-in or challenge
--headless boolean false Run unattended in a background browser window: never headless (Chrome would announce the run as HeadlessChrome to every site) and no waiting for a person at a sign-in or challenge. When the run attaches to your running Chrome (--chrome-launch cdp, or auto while 'blowhorn chrome status' says ready) the tab opens in its own visible Chrome window instead: a hidden tab is throttled, so the previous app is only re-activated once
--log-dir string Directory where daily rotated stdout/stderr logs are persisted while still streaming to the console
--profile string Profile context (name, comma-delimited names, or 'all' alias for all profiles)
--verbose, -v boolean false Enable verbose output (includes COMMAND SUMMARY)

Exit codes, unless a command's page lists its own:

Exit code Meaning
0 Success.
1 The command failed; with --json, stdout is a Problem (`ok: false`, `error`).
2 Usage error: an unknown flag or a bad argument (Click).
3 The store is unavailable (`EXIT_STORE_UNAVAILABLE`); with --json, stdout is a Problem.
Last modified October 18, 2026