Graphite Chat - The AI reviewer you can collaborate with.
Built into your PR page, Graphite Chat goes beyond static comments to help you review, fix, and commit changes, instantly.
Ask Graphite about this PR...
Graphite left 3 comments
Generate PR description
How can I fix thebuild_and_test_apps CI failure?
Turn feedback into instant fixes
Graphite Chat brings full context from your codebase and PR history to every review. Ask questions and make instant updates right as you're reviewing.
Instant, high-signal AI reviews
Get precise, context-aware feedback on your PRs the moment you open them.
Get in-line context on code changes
Ask Graphite Chat for explanations on code diffs right where you're reviewing, with full context from your codebase and repo history.
Resolve CI failures in one click
Fix failing checks right in your PR. Graphite Chat knows what's broken and patches it instantly.
Apply fixes instantly
Turn suggested fixes into commits in seconds. Review, accept, and apply improvements all without leaving your PR.
Preview and update changes with a full Editor view
See and edit your code in context with a complete, built-in editor on your PR page.
Get instant reviews
Start catching bugs in under 3 minutes.
- Instant reviews
- 1-click fixes
- High signal
- Custom rules
Graphite Chat
342 issues found
- Potential edge case
- Documentation issue
- Code quality/style
- Performance issue
- Accidentally committed code
- Security issue
- Logic bug
1482 PRs reviewed
281 Issues led to fixes
3.5% Comments downvoted
const port =3000;
Unresolved thread: line +3
Graphite 1h ago
Logic bug
Change the port from 3000 to 8000 to match the exported port in the tests. The CI test is failing because it expects the server to run on port 8000.
Suggested change
const port = 3000;
const port = 8000;
Commit suggestion
Update server.js
Commit changes
Custom rules
Define rules to detect issues in your codebase in addition to general bugs.
Prompt
Choose from template
- Implement rate limiting and request validation to prevent abuse.
- Verify the integrity of third-party libraries and dependencies before use.
Get feedback on every PR in seconds, not hours.
Testimonial
It's different from other AI tools because...it actually works.
Brian Michel, Software Engineer
Read the case study
Why teams choose Graphite Chat
The features that help teams review faster, catch more bugs, and enforce best practices.
More impact, less noise
Teams that use Graphite Chat catch more critical issues with fewer false positives than competing solutions, from benchmark tests.
Less than 5% negative comment rate
Instant reviews
Graphite Chat integrates directly with GitHub where you can take suggestions in 1-click. No context switching needed.
Seamless integration with GitHub
Custom rules
Scale your team’s best practices. Write your team’s preferred rules in plain language, or choose from templates. Graphite Chat enforces them across every PR, instantly.
- OWASP Security
- Airbnb JavaScript style guide
- a11y Accessibility
- PEP Python style guide
- Create your own rule
- Google Java style guide
- Google TypeScript style guide
- Airbnb Ruby style guide
- Google Go style guide
Logic bug
The condition in the if statement should be inverted. Change it to:
if (!Object.keys(ASYNC_JOB_REGISTRY).includes(kind)) {
Potential edge case
readlink -f is not available on macOS by default. A more portable solution would be:
filepath=$(perl -e 'use Cwd "abs_path";print abs_path(shift)' "$0")
This achieves the same result but works across both Linux and macOS environments.
Security issue
Please remove this token logging. Exposing GitHub access tokens in logs creates a security risk, as these tokens grant API access and should be treated as sensitive credentials.
Accidentally committed code
Adding || true to this condition causes the function to unconditionally return "BINARY", bypassing the binary detection logic. This appears to be unintentional and should be removed to restore the original file type detection behavior.
Performance
The await inside Promise.all([...]) is preventing parallel execution of these promises. Since Promise.all expects an array of promises, the await here will cause the stack dependency check to complete before the merge job query begins. To achieve the intended parallel execution, remove the await from db.stack.getStackDependencyForPr().
Code style/quality
The callsite value markNotifAsRead doesn't match the function name markAsReadEndpoint.
Documentation issue
The description 'Get auth tokens for user' doesn't match the command's actual functionality. Consider changing it to 'Run async job queue and send a test email'.
Use cases
Catch more than just typos
- Logic bug
- Potential edge case
- Security issue
- Accidentally committed code
- Performance
- Code style/quality
- Documentation issue
Frequently asked questions
How do I get access to Graphite Chat?
Does Graphite Chat have repo and codebase context?
What can I do with Graphite Chat?
How is Graphite Chat different from other AI code reviewers?
What's the difference between Graphite Chat, AI Reviews, and Chat?
Is my code secure when using Graphite Chat?
Can Graphite Chat work with stacked PRs?
Still have questions? Reach out to our team.