Configuration
Every per-repo setting — what it does, the default, and when to change it.
Per-repo settings live at /dashboard/repos/[id] under the Settings tab. Saving the form writes a single JSON patch — only the keys you change are stored, so defaults can evolve without migrating old rows. Changes take effect on the next review event for that repo. Reviews already in flight finish under the configuration that existed when they started; they are not retroactively retuned.
Tier 1 — Output shape
Controls what makes it from the AI reviewer's findings out to a posted comment. These knobs are the fastest lever for tuning signal-to-noise.
| Setting | Default | Range / Options | Effect |
|---|---|---|---|
| minConfidence | 7 | 1–10 | Confidence floor for findings. Below this, the finding is dropped before posting. |
| minConfidenceAsymmetry | 5 | 1–10 | Lower confidence floor applied specifically to the asymmetry category, where false positives are cheaper than misses. |
| maxFindingsPerPr | null (uncapped) | 1–100 or null | Hard cap on inline comments posted per PR. Highest-priority findings win when the cap binds. |
| maxFindingsPerFile | null (uncapped) | 1–50 or null | Hard cap on inline comments posted per file in a single review. |
| enabledCategories | all | subset of: bug, security, performance, style, correctness, testing, docs, asymmetry, other | Categories outside the allowlist are dropped before posting. |
| severityFloor | nitpick | critical | warning | suggestion | nitpick | Drops findings below this severity. Default posts everything. |
| summaryPipelineEnabled | true | boolean | Runs the fast PR-summary pipeline alongside the deep review. Disabling skips the description block entirely. |
| autoResolveThreads | true | boolean | Auto-collapses GitHub review threads when their underlying issue is detected as fixed. |
| postFixedReply | true | boolean | Posts an acknowledgement reply on threads whose issue was fixed in the latest push. |
| updatePrSummary | true | boolean | Upserts the AI summary block in the PR description (between the marker comments). |
| includeAgentPrompt | true | boolean | Appends a copy-pasteable agent prompt to each finding so a coding agent can apply the fix. |
| includeLearningsAttribution | true | boolean | Cites the learning that informed a finding inline, when one applied. |
Tier 2 — Triggers and scope
Controls which PRs and which branches get reviewed at all. Use these to keep noisy or out-of-scope branches out of the review queue.
| Setting | Default | Range / Options | Effect |
|---|---|---|---|
| triggerEvents | [opened, synchronize] | subset of: opened, synchronize, ready_for_review | GitHub PR events that fire a review. Add ready_for_review to also review when a draft is marked ready. |
| skipDraftPrs | false | boolean | Skip reviews on draft PRs entirely. Pairs well with adding ready_for_review to triggerEvents. |
| skipBotPrs | false | boolean | Skip reviews when the PR author is a GitHub App or bot account. |
| branchAllowlist | [] (all branches) | string[] of glob patterns | If non-empty, only PRs targeting a base branch matching one of the patterns are reviewed. Empty array means every base branch is reviewed. |
| maxDiffChars | null (uncapped) | 1,000–1,000,000 or null | When set, trailing files are dropped from the diff once the running character count exceeds this cap. The review still runs on the kept files (the dropped ones are not reviewed). Useful for capping cost on huge auto-generated PRs without skipping them entirely. |
| mentionEnabled | true | boolean | Allows on-demand reviews via @mention in PR comments. Disable to make reviews strictly event-driven. |
| checkRerunEnabled | true | boolean | Allows the GitHub Check Run's Re-run button to fire a fresh review on the current head SHA. |
Tier 3 — Learning and memory
Controls per-repo learning: capturing developer feedback on prior comments, retrieving relevant lessons on future reviews, and the floor at which a stored memory is considered relevant.
| Setting | Default | Range / Options | Effect |
|---|---|---|---|
| learningsEnabled | true | boolean | Master switch for per-repo learning. When off, no learnings are fetched or injected during reviews. |
| maxLearningsInjected | 50 | 1–200 | Cap on the number of stored learnings included in a single review's context. |
| feedbackCaptureEnabled | true | boolean | Captures developer replies on review comments and routes them through the feedback pipeline. |
| storedFeedbackClasses | [learning, correction] | subset of: learning, correction, disagreement, question, acknowledgement | Which classes of captured feedback are persisted as memories. Defaults to the two highest-signal classes. |
Tier 4 — Cost and performance
Controls how much work the AI reviewer does per PR. The defaults are sized for thorough reviews on medium PRs; tighten these on repos with very fast iteration cycles or strict latency budgets.
| Setting | Default | Range / Options | Effect |
|---|---|---|---|
| maxToolRounds | 4 | 1–20 | Maximum agentic tool-use rounds the AI reviewer may take per file group. Lower values are faster and cheaper at the cost of investigation depth. |
| enrichmentEnabled | true | boolean | Pulls extra context (full file contents, adjacent tests, dependency graph) before the review fan-out. |
| enrichmentDepth | 2 | 0–3 | How many import-graph hops the enrichment step follows from each changed file. 0 disables dependency pulling. |
| projectRulesEnabled | true | boolean | Loads project-rule files (.cursorrules, ESLint config, tsconfig, and similar conventions) from the target repo into the review context. |
| checkRunEnabled | true | boolean | Creates and updates a GitHub Check Run for each review. Disabling hides the in-progress and completion signals from the PR's checks panel. |
| skipTrivialFiles | true | boolean | Skips lockfiles, .md, .env, package.json, and deletion-only files where deep review adds no value. |
| briefingEnabled | true | boolean | Runs a one-shot PR briefing pass before fan-out, surfacing risk areas and conventions to each per-file reviewer. |
| verifyReviewEnabled | true | boolean | Runs a verification pass over emitted findings before posting. Catches obvious false positives at the cost of one extra call per review. |
Common trade-offs
Tuning starting points for the most common complaints.
- Too many comments — Raise minConfidence (try 8 or 9), set maxFindingsPerPr to a hard cap (10–20), and narrow enabledCategories to bug, security, correctness. Consider raising severityFloor to warning so suggestions and nitpicks stop posting.
- Missing real bugs — Lower minConfidence (try 5 or 6), confirm bug and security are in enabledCategories, keep severityFloor at nitpick or suggestion, and leave verifyReviewEnabled on so high-confidence findings survive verification.
- Reviews are too slow — Drop enrichmentDepth to 1 or 0, drop maxToolRounds to 2, disable verifyReviewEnabled, and consider disabling briefingEnabled. Each removed pass cuts wall time roughly proportional to its share of the pipeline.
- Dashboard is full of huge auto-generated PRs — Set maxDiffChars to a sensible cap (e.g. 200000) so vendored or generated diffs are skipped, and set skipBotPrs to true if dependency-bot PRs dominate the queue.
Storage and validation
Settings are stored as a partial patch on the repo_settings row. Omitted keys mean 'use the current default' — defaults can change in future product updates without migrating saved rows. The form validates every value on save; out-of-range numbers, unknown enum values, and malformed glob patterns are rejected before they reach the pipeline.