Command-line options

Updated Jul 27, 2026

dakar-review accepts the following options:

  • --repo-root <path> selects the Git checkout to review. The default is the current working directory.
  • --config <path> selects a CodeRabbit YAML file relative to the repository root.
  • --base <ref> selects the base ref for the first review. The default is origin/main.
  • --head <ref> selects the head ref to review. The default is HEAD.
  • --state-root <path> overrides the review-history root.
  • --max-tasks <number> caps the planned review tasks. Under the deterministic-flex-v1 route it composes with --max-luna-calls: the effective finder-pack cap is the smaller of the two, so --max-tasks 1 --max-luna-calls 4 dispatches at most one finder pack. See the review-tuning flags below.
  • --max-candidates <number> and --max-findings <number> override the workflow limits described below.
  • --synthesis-model <model> and --synthesis-reasoning <level> are accepted for backward compatibility and still appear in the dry-run contract's synthesisModel/synthesisAdapter fields, but under the deterministic-flex-v1 route the audit call always runs on the fixed Terra Flex lane (gpt-5.6-terra, medium reasoning); these flags no longer change which model or adapter performs the audit.
  • --timeout <seconds> sets the ODW wait timeout. The default is 3600. Operators overriding this should keep it above the review's worstCaseReviewSeconds (2,020 s at default limits; see the dry-run example below), the worst-case wall clock the retry schedule can take.
  • --runs-root <path> selects the ODW runs directory used for the run, logs, and result.
  • --format <json|markdown> selects the output format. The default is json.
  • --odw-bin <path> selects the ODW executable. The default is odw.
  • --telemetry streams ODW logs to standard error while preserving the final result on standard output.
  • --dry-run returns the workflow contract without launching review agents.
  • --help prints command usage, and --version prints the Dakar version.

The following review-tuning flags forward directly to the workflow arguments. The CLI only parses and forwards them; the workflow enforces every bound, so values outside the documented range clamp to the nearest permitted value rather than fail. See "Cost, budget, and the ledger" and "Retries, downgrades, and deferral" below for what each knob controls.

  • --budget-gbp <number> sets the hard admission budget in GBP. The default is 0.1.
  • --max-luna-calls <number> caps the Luna Flex finder calls. The default is 4. It composes with --max-tasks: the effective finder-pack cap is the smaller of the two.
  • --transaction-max-files <number> sets the maximum files per finder pack. The default is 5.
  • --transaction-max-input-tokens <number> and --transaction-max-output-tokens <number> set the per-finder token estimates used for admission. The defaults are 12000 and 750.
  • --terra-max-input-tokens <number> and --terra-max-output-tokens <number> set the audit-call token estimates. The defaults are 48000 and 2500.
  • --adapter-overhead-tokens <number> sets the per-call adapter overhead added to every admission estimate. The default is 13000; raising it towards 28000 better models the cache pi's agentic loop writes on first, uncached calls.
  • --max-audit-candidates <number> caps the candidates forwarded to the audit. The default is 30.
  • --luna-reasoning <low|medium> selects the Luna finder reasoning effort. The default is low.
  • --routing-policy <policy> selects the routing policy. The default and sole live value is deterministic-flex-v1.
  • --flex-attempts <number> sets the Flex retry attempts per call. The default is 3.
  • --per-call-timeout <seconds> sets the per-model-call timeout. The default is 300.

When --config is omitted, Dakar resolves review configuration in this order:

  1. Repository-local .coderabbit.yaml.
  2. Repository-local .coderabbit.yml.
  3. Repository-local coderabbit.yaml.
  4. Repository-local coderabbit.yml.
  5. User-level $XDG_CONFIG_HOME/dakar/config.yaml, or ~/.config/dakar/config.yaml when XDG_CONFIG_HOME is unset.
  6. Dakar's bundled example config.

The user-level config is treated as the current repository's CodeRabbit config only when no repository-local CodeRabbit YAML exists. It is useful for agents that should apply one house review policy across repositories without copying a .coderabbit.yaml into every checkout.

How much of the CodeRabbit format is honoured

Dakar uses the resolved file at two boundaries. Host code deterministically discovers the path, safely parses the YAML without constructing custom tags, and validates Dakar's supported policy subset before preparation or any ODW, Luna, or Terra dispatch. The normalized serializable policy is then passed to the workflow. Models never parse the YAML file.

The host rejects a missing explicit --config path, malformed YAML, and an invalid shape or value for any supported field. Diagnostics identify both the resolved configuration path and the invalid field. Unsupported keys are reported in the result's ignoredPolicyKeys list and have no routing, gating, budget, retry, or recording effect.

Support level What it covers
Host-enforced Path discovery and precedence; safe YAML parsing; supported-field validation; fail-closed handling of missing explicit paths and malformed policy; deterministic changed-path matching for reviews.path_instructions; per-finder-pack instruction slicing; and pre_merge_checks.custom_checks[].command execution. An omitted mode or mode: error blocks on failure; mode: warning is non-blocking. Review limits, budget, and ranges remain Dakar CLI and workflow arguments rather than CodeRabbit keys.
Model-mediated language, tone_instructions, reviews.profile, path-instruction prose selected by the host for the current evidence pack, and custom-check instructions. These fields guide judgement and phrasing; their semantic interpretation remains model-mediated.
Ignored Unsupported keys including early_access; chat.integrations; knowledge_base; issue_enrichment; code_generation; pull-request surface options such as auto_title_instructions, high_level_summary_*, walkthrough and labelling options, request_changes_workflow, abort_on_close, auto_review, and estimate_code_review_effort; and tools integrations such as github-checks, languagetool, clippy, and presidio. They are reported as ignored and do not affect deterministic execution.

Table: CodeRabbit configuration support levels in the current route.

Executable custom checks use this validated subset:

pre_merge_checks:
  custom_checks:
    - name: Test
      mode: error
      command: make test
    - name: Advisory analysis
      mode: warning
      command: make advisory

Commands run in configuration order from the reviewed repository after range preparation and before ODW starts. A failed mode: error check returns stage: "deterministic-gates" with redacted evidence and launches no Luna or Terra calls; a failed non-error check is retained in SARIF and semantic review continues. Commands must not embed credentials. Output is bounded, common credential forms and sensitive environment values are redacted, and full streams are represented by SHA-256 digests.

For repository-local configuration, executable commands are loaded from the prepared trusted base commit, not the head under review. A pull request cannot grant itself host command execution by adding or changing a custom check. User-level and bundled configurations are outside the reviewed repository and are read from their resolved operator-controlled paths.

Each reviews.path_instructions entry requires non-empty string path and instructions fields. Dakar matches the glob against normalized changed paths and includes an instruction only in finder packs containing a matching path. General language, tone, profile, and natural-language custom-check guidance is included without exposing executable commands or ignored keys. A root AGENTS.md is loaded through its own dedicated path (described below), independently of unsupported knowledge_base.code_guidelines patterns.

ODW normally runs agents in copied workspaces. Those copies may not contain the repository's .git directory, so live review runs should pass repoRoot as an absolute path. Finder and verifier prompts use git -C <repoRoot> for diff evidence, and the prepare step passes the same path to the state helper.

If the reviewed repository has a root AGENTS.md, dakar-review passes it to the workflow as repository-local review context. Workflow schema rules, machine-readable output requirements, and Dakar safety rules still take precedence over repository instructions.

For a syntax and contract check that does not call review agents, run either:

dakar-review --dry-run --repo-root "$PWD"
npm run odw:dry-run

Dry-run output includes the workflow version, default finder model set, synthesis model and adapter, task kinds, limits, default task graph, and JSON Schemas used for candidate, verifier, and synthesis handoffs.

By default, dakar-review stays quiet until the workflow finishes so standard output is easy to parse. To watch ODW progress while keeping the final result machine-readable, pass --telemetry:

dakar-review --repo-root "$PWD" --base origin/main --telemetry

Telemetry follows odw logs <run-id> --follow and writes the live ODW event stream to standard error. The final JSON or Markdown result still goes to standard output, so callers can redirect the channels independently:

dakar-review --repo-root "$PWD" --telemetry > review.json