// docs · v1.x

Flags

Every flag CommitBrief accepts, grouped by command and generated from the binary's own surface inventory — global flags first, then each command's local flags.

Updated September 23, 2026

CommitBrief’s flags split into two scopes. Global flags are declared on the root command and inherited by every subcommand, so every subcommand accepts them — --json, --quiet, --provider, and the path/commit filters all parse on commitbrief, commitbrief diff, and commitbrief remote pr alike. Accepting a flag isn’t the same as honoring it, though: in its default posting mode, remote pr rejects --json/--markdown/--output/--copy/--compact — those five are exempted under --no-post, since that mode renders locally instead of posting to GitHub. The commit filters (--author, --committer, --start-date, --end-date, --text) are rejected in every mode, --no-post included, because remote pr’s diff always comes from gh pr diff, never a local commit walk — see remote pr’s behavior notes for the exact list. Command flags exist only on the command they’re listed under below — commit’s --type has no meaning to map, and --branches has no meaning outside map.

The table below groups every non-hidden flag under the command it belongs to. The root group, commitbrief, holds both: in that table, --staged and --unstaged are local to the default review invocation itself; everything else in that group is global. Local flags don’t carry over to commit, guard, or any other subcommand. This page doesn’t repeat that split per row; when a flag’s behavior depends on which scope it’s in, the command’s own page says so.

commitbrief

NameTypeDefaultUsage
--allow-secretsboolfalsebypass the pre-send secret scanner (use with care)
--authorstringSlice[]review only commits authored by these people (repeatable; matches name or email, case-insensitive). Switches the scope to a commit walk
--clistring—use a locally-installed CLI tool (claude|gemini|codex) as the review backend; shorthand for --provider <name>-cli
--colorstringautocolor output: auto, always, never
--committerstringSlice[]review only commits committed by these people (repeatable; matches name or email, case-insensitive)
--compactboolfalseone-line per finding (dense review output)
--copyboolfalsecopy findings (severity, path, title, description) to the system clipboard via OSC 52 + native tool
--dirstringSlice[]review only files under these directories or matching dir globs (e.g. internal/**; repeatable, one pattern per flag); combines with the active scope flag
--end-datestring—review only commits on or before this date (YYYY-MM-DD, inclusive)
--exclude-dirstringSlice[]skip files under these directories or matching dir globs (repeatable, one pattern per flag); applied after --dir so an exclusion wins
--exclude-filestringSlice[]skip these files or globs (repeatable, one pattern per flag); same matching rules as --file, applied after it so an exclusion wins
--fail-onstring—exit 1 if any finding meets/exceeds severity (critical|high|medium|low|info|any|none)
--filestringSlice[]review only these files or globs (e.g. *.go, internal/**/*.ts; repeatable, one pattern per flag — patterns can't be comma-joined); combines with the active scope flag
--ignore-unknown-configboolfalsecontinue when config.yml holds a key the schema doesn't define, instead of failing; every ignored key is still named in a warning on stderr (the setting has no effect — fix the key)
--jsonboolfalseemit machine-readable JSON output
--langstring—AI output language (e.g. tr, fr); the CLI interface localizes for en/tr only, output for any recognized language. Resolution: --lang → repo config → user config → English
--markdownboolfalseemit plain markdown (no ANSI)
--max-commitsint0cap how many matching commits enter the review (0 = 200); only meaningful with another commit filter
--mergesboolfalseinclude merge commits in a commit-filtered review (excluded by default); only meaningful with another commit filter
--min-severitystring—hide findings below this severity in the rendered output (critical|high|medium|low|info); --json and --fail-on still see the full set
--modelstring—override configured model
--no-architectureboolfalseskip architecture-aware review (do not read architecture.json into the prompt) for this run (ADR-0030)
--no-baselineboolfalseignore the signal-control baseline for this run (show everything, even baselined findings)
--no-cacheboolfalsebypass cache (read and write)
--no-cost-checkboolfalseskip the pre-send cost estimate prompt
--no-flakyboolfalseskip the deterministic flaky-test detector (ADR-0022)
--outputstring—write output to file instead of stdout
--providerstring—override configured provider
--quietboolfalsesuppress info messages on stderr
--sandbox-rerunint0confirm flagged flaky tests by re-running each in isolation N times (ADR-0022); mixed pass+fail = confirmed flaky, all-fail = real failure, all-pass = transient. 0 = off; bare --sandbox-rerun uses N=5. Requires a bound rerun executor
--show-promptboolfalseprint the exact system + user prompt that would be sent, then exit (no provider call, no cost)
--start-datestring—review only commits on or after this date (YYYY-MM-DD, inclusive)
--suggest-commitboolfalseafter the review, suggest a Conventional Commit message for the staged diff (requires --staged; prints to stdout; not with --json/--markdown/--output)
--textstring—review only commits whose message contains this text, plus commits unique to a branch whose name contains it (case-insensitive)
--timeoutstring—bound the whole run to this duration — 90s, 10m, 1h30m, or a bare number of seconds (600). Covers diff, provider call, render, and time spent at a confirmation prompt. Also RAISES the provider's own cap (claude/gemini/codex-cli 5m, ollama 5m, Anthropic SDK 10m), which a deadline alone cannot do. Unset or 0 keeps those built-ins. Resolution: --timeout → review.timeout → built-in
--update-baselineboolfalserewrite .commitbrief/baseline.json from the current findings (accepts them all) instead of filtering this run; user-private, gitignored (ADR-0027)
--verboseboolfalseshow token/cost/latency footer
--with-contextboolfalselet the CLI provider read project files beyond the diff to ground the review (CLI providers only; the host CLI's agent reads your repo — see --help)
--yesboolfalseauto-confirm prompts (pre-send guard, init overwrite)
--stagedboolfalsereview staged changes (default)
--unstagedboolfalsereview unstaged changes

commitbrief cache inspect

NameTypeDefaultUsage
--show-contentboolfalsealso print the cached review body (omitted by default)

commitbrief cache prune

NameTypeDefaultUsage
--keep-lastint500keep only the N newest entries (per the provider/model filter); 0 means keep nothing
--modelstring—only consider entries written for this model (matched against the model recorded in each entry)
--older-thanstring7ddelete entries older than this age. Units: d (day), w (week), m (month, 30d), y (year, 365d)
--providerstring—only consider entries written for this provider (e.g. anthropic, openai, gemini, ollama)

commitbrief commit

NameTypeDefaultUsage
--generateint0offer N alternative messages to choose from (default 1, or commit.generate config)
--typestring—commit message format: plain|conventional|conventional+body|gitmoji|subject+body (default "plain", or commit.type config)

commitbrief compress

NameTypeDefaultUsage
--dry-runboolfalseshow the result summary; do not write or back up anything
--levelstringbalancedcompression level: light | balanced | aggressive
--outstring—write result to this path instead of replacing COMMITBRIEF.md

commitbrief config set

NameTypeDefaultUsage
--localboolfalsewrite to repo .commitbrief/config.yml instead of user-level

commitbrief doctor

NameTypeDefaultUsage
--quietboolfalseonly print warning and failed checks

commitbrief dry-run

NameTypeDefaultUsage
--stagedboolfalsereview staged changes (default)
--unstagedboolfalsereview unstaged changes

commitbrief guard

NameTypeDefaultUsage
--diffstringSlice[]run-mode: review an arbitrary git diff range (e.g. main...HEAD); repeatable
--from-jsonstring—evaluate a prior schema-v1 review JSON (a file path, or - for stdin) instead of running a review
--policystring.commitbrief/policy.ymlpath to the policy file
--unstagedboolfalserun-mode: review the unstaged working tree instead of the staged index

commitbrief init

NameTypeDefaultUsage
--forceboolfalseoverwrite existing COMMITBRIEF.md / OUTPUT.md (alias of --yes for init)

commitbrief install-hook

NameTypeDefaultUsage
--hookstringpre-commitgit hook name (pre-commit | commit-msg | pre-push)
--uninstallboolfalseremove a previously installed hook (only one this command wrote)

commitbrief leaks

NameTypeDefaultUsage
--no-historyboolfalseskip the commit-history half
--no-worktreeboolfalseskip the working-tree half
--patternsboolfalselist the effective pattern set (built-ins + configured) and exit

commitbrief map

NameTypeDefaultUsage
--allboolfalsewalk every branch, not just the given range (commit graph only)
--branchesboolfalseshow a branch topology summary instead of the commit graph

commitbrief providers use

NameTypeDefaultUsage
--localboolfalsewrite to repo .commitbrief/config.yml instead of user-level

commitbrief remote pr

NameTypeDefaultUsage
--no-postboolfalsereview the PR diff and print locally (no GitHub writes); enables --json/--markdown/--output/--copy/--cli like a local review
--repostring—target repository owner/repo (overrides git context)
--request-changes-onstring—opt in to a request-changes verdict at/above this severity (critical|high|medium|low); omitted, the verdict is never request-changes (comment / approve only)

commitbrief setup

NameTypeDefaultUsage
--aliasstring—install a shell alias for commitbrief (default cbr); skips the provider wizard. Use --alias for an interactive prompt or --alias=<name> to set it directly
--localboolfalsesave to repo .commitbrief/config.yml instead of user-level

commitbrief summary

NameTypeDefaultUsage
--stagedboolfalsereview staged changes (default)
--unstagedboolfalsereview unstaged changes

commitbrief upgrade

NameTypeDefaultUsage
--checkboolfalseonly report whether a newer version exists; install nothing

Two build-only flags are excluded: --gen-surface regenerates this site’s own surface data, and --gen-man generates the CLI’s man pages (man/*.1) — neither is part of the flags a normal invocation uses.

See also