<!-- LLM_VERSION_INFO
FORMAT: text/markdown
CONTENT_TYPE: article
ORIGINAL_URL: https://graphite.com/features/chat
ALTERNATE_VERSION: features/chat/index.html (text/html)
EXTRACTION_DATE: 2026-04-18T23:47:49.608Z

This is the markdown version with text-only content (images converted to alt-text).
For rich formatting with images, request the HTML version at: features/chat/index.html
-->

# 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

```javascript
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**  
```javascript
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:  
```javascript
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:  
```bash
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.
