.greptile/ folder. For how cascading works and monorepo examples, see .greptile/ Configuration.
config.json
Your review settings and structured rules. All fields are optional — only include what you want to configure.Review Settings
| Field | Type | Default | Description |
|---|---|---|---|
strictness | 1 | 2 | 3 | 2 | Comment threshold. 1 = verbose (flags more issues), 3 = critical only (flags fewer issues) |
commentTypes | string[] | ["syntax", "logic", "style", "info"] | Which comment categories to include |
fileChangeLimit | number | — | Maximum number of changed files to review |
model | string | — | LLM model override |
Filters
Control which PRs get reviewed.| Field | Type | Description |
|---|---|---|
labels | string[] | Only review PRs with these labels |
disabledLabels | string[] | Skip review for PRs with these labels |
includeAuthors | string[] | Only review PRs from these authors |
excludeAuthors | string[] | Skip review for PRs from these authors |
includeBranches | string[] | Only review PRs targeting these branches |
excludeBranches | string[] | Skip review for PRs targeting these branches |
includeKeywords | string | Newline-separated keywords. Only review PRs with these in title/description |
ignoreKeywords | string | Newline-separated keywords. Skip PRs with these in title/description |
ignorePatterns | string | File patterns to skip, using .gitignore syntax (newline-separated) |
Behavior
| Field | Type | Default | Description |
|---|---|---|---|
triggerOnUpdates | boolean | false | Re-run the review when the PR is updated |
statusCheck | boolean | false | Post a GitHub status check with the review result |
statusCommentsEnabled | boolean | — | Enable status comments on PRs |
skipReview | "AUTOMATIC" | — | Set to "AUTOMATIC" to skip review entirely for files in this directory |
shouldUpdateDescription | boolean | — | If true, updates PR description instead of posting a review comment |
updateExistingSummaryComment | boolean | — | Update existing review comment instead of creating a new one |
updateSummaryOnly | boolean | — | Only update the summary, don’t post individual inline comments |
fixWithAI | boolean | — | Add AI fix prompts to help AI coding assistants understand suggested fixes |
hideFooter | boolean | — | Hide the Greptile footer from review comments |
comment | string | — | Disclaimer or prefix text added to every PR summary |
Output Sections
Each section controls a part of the review output. All sub-fields are optional booleans.| Field | Description |
|---|---|
summarySection | PR summary at the top of the review |
issuesTableSection | Table of all issues found |
confidenceScoreSection | Confidence score for each comment |
sequenceDiagramSection | Sequence diagram of the changes |
| Sub-field | Type | Description |
|---|---|---|
included | boolean | Whether to show this section |
collapsible | boolean | Whether the section can be collapsed |
defaultOpen | boolean | Whether the section starts expanded |
Instructions
| Field | Type | Description |
|---|---|---|
instructions | string | Free-form instructions for the reviewer. When cascading, instructions from all parent configs are concatenated together. |
Rules
Structured rules let you define what the reviewer should check for, with optional scoping and severity.| Field | Type | Description |
|---|---|---|
rules | Rule[] | Array of structured rules. See schema below. |
disabledRules | string[] | IDs of rules inherited from parent configs that should not apply in this directory. See Disabling Inherited Rules. |
Rule Schema
Each entry in therules array:
| Field | Type | Required | Description |
|---|---|---|---|
rule | string | Yes | The rule instruction shown to the reviewer |
id | string | No | Stable identifier. Required if a child config needs to disable this rule via disabledRules. |
scope | string[] | No | Glob patterns for files this rule applies to, relative to the .greptile/ directory. Avoid ../ patterns — rules should apply within their own directory tree. |
severity | "low" | "medium" | "high" | No | Severity level for violations |
enabled | boolean | No | Whether the rule is active. Default: true |
Complete Example
.greptile/config.json
id so it can be disabled by child configs. The second rule has no id — it applies everywhere and can’t be selectively turned off.
rules.md
Plain markdown passed to the reviewer as context. The entire file is scoped to the directory containing the.greptile/ folder — it applies to all files reviewed within that directory tree.
There is no special syntax or parsing. Write standard markdown with headings, lists, code blocks, and any other formatting that helps communicate your rules clearly.
Example
.greptile/rules.md
rules.md vs config.json rules
Both define review rules. The difference is structure and granularity:rules.md | config.json rules | |
|---|---|---|
| Format | Free-form markdown | Structured JSON |
| Scoping | Entire file applies to its directory tree | Per-rule scope via glob patterns |
| Severity | Not supported | low / medium / high |
| Disable by ID | Not supported | Supported via disabledRules |
| Best for | Prose explanations, code examples, guidelines | Precise, individually scoped and disableable rules |
.greptile/ folder. They’re additive — the reviewer sees rules from both sources.
files.json
Points the reviewer to existing files in your repository that it should read for context — database schemas, API specs, architecture docs, or anything that helps the reviewer understand your codebase.Schema
| Field | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Path to the file, relative to the repository root |
description | string | No | What the file contains and why it’s relevant to reviews |
scope | string[] | No | Glob patterns — only include this file when reviewing files matching these patterns. Patterns are relative to the .greptile/ directory; avoid ../ patterns. |
Example
.greptile/files.json
scope are included in every review within the directory tree. Files with a scope are only included when the file being reviewed matches one of the glob patterns.
File references are accumulated from all parent configs — a child config doesn’t replace the parent’s file list, it adds to it.