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.