Known Limitations

Limitations

Known constraints and behaviors to be aware of before relying on the reviewer in production.

LLM limitations

False positives and false negatives

The reviewer uses a language model. It will sometimes flag code that is correct (false positives) and miss bugs that exist (false negatives). Treat findings as signals to investigate, not verdicts.

Hallucinated line numbers

The model may cite a line number that doesn't exactly match the diff. Always read the finding description and look at the surrounding code, not just the cited line.

Context window limits

Each file diff is truncated at 80,000 characters. Very large files or PRs with many changed files may have some diffs truncated. The reviewer logs which files were truncated.

No execution

The reviewer reads code statically. It cannot run tests, execute the binary, or reproduce bugs at runtime. Dynamic issues (race conditions, memory leaks, behavior under real load) are harder for it to catch.

GitHub limitations

Only diff-visible lines get inline comments

GitHub's API only allows inline comments on lines that appear in the PR diff. Findings on unchanged context lines or files not in the diff are moved to the summary comment.

Rate limits

For PRs with many files, the reviewer makes multiple API calls to fetch file contents. If the GitHub API rate limit is hit, the review is retried after a backoff. In extreme cases (very large PRs), it may fail.

Draft PRs are skipped

The recommended workflow skips draft PRs (github.event.pull_request.draft == false). This is intentional — draft PRs are works in progress.

Supported contexts

review-pr requires GitHub Actions

The review-pr command reads PR context from GITHUB_EVENT_PATH and GITHUB_REPOSITORY environment variables set by GitHub Actions. It cannot run outside a GitHub Actions environment.

handle-feedback requires Actions + pull_request_review_comment trigger

The handle-feedback command requires the workflow to be triggered by pull_request_review_comment. See Inline Feedback.

Dependency graph is JS/TS only

The one-level dependency graph (importing caller/callee context) only works for JavaScript and TypeScript stacks. Other stacks send only the changed file diffs.

Configuration limitations

tech: override is per-repo, not per-directory

The tech stack detection applies to the whole repo. Monorepos with multiple stacks get the rules of whichever stack is detected (or forced via tech:).

rules: file is a single file

The rules: field accepts one Markdown file. If you need rules from multiple sources, concatenate them into one file, or use customInstructions: for short additions.

Cost

Each PR review is one LLM API call. Cost depends on the provider, the model, and the size of the diff. With gpt-4o-mini at OpenAI pricing, a typical PR with 5–10 changed files costs less than $0.01. Larger PRs with many changed files cost proportionally more.

To limit cost, configure maxFileSize to skip large generated or minified files, and use ignore: patterns to exclude non-production code.