Feature parity across code hosts ​
Status: 2026-10-13. GitHub connects through GitHub Apps; GitLab, Azure DevOps Repos, Bitbucket Cloud, Bitbucket Data Center, Gitea and Forgejo connect through token connections (setup). The publisher reads each provider's capabilities (ProviderCapabilities in packages/shared-types/src/git-provider.ts) and degrades instead of dropping output: a finding that cannot be shown one way is shown another way, never silently lost.
Legend: ✅ supported · ◐ supported with a difference (see note) · — not available. Columns: GH GitHub · GL GitLab · AZ Azure DevOps · BBC Bitbucket Cloud · BBDC Bitbucket Data Center (9.4+) · GT Gitea (1.26+) · FJ Forgejo (15+).
Review ​
| Capability | GH | GL | AZ | BBC | BBDC | GT | FJ |
|---|---|---|---|---|---|---|---|
| Inline comments on added and context lines | ✅ | ✅ draft notes with position | ✅ threadContext | ✅ inline.to | ✅ anchor (lineType, fileType TO) | ✅ new_position | ✅ new_position |
| Comments on removed lines (left side) | ✅ | ✅ old_line | ✅ | ✅ inline.from | ✅ fileType FROM | ✅ old_position | ✅ old_position |
| Multi-line comments | ✅ | ✅ line_range | ✅ | ✅ start_to/start_from | ✅ multilineMarker | ◐ single line (the last line of the range) | ◐ single line |
| Atomic posting (all comments or none) | ✅ review | ✅ bulk publish | ◐ one thread at a time | ◐ one comment at a time, summary last | ◐ one comment at a time, summary last | ✅ review | ✅ review |
| One-click suggestions | ✅ | ✅ suggestion:-N+0 | ◐ code block | ◐ code block | ✅ ```suggestion | ◐ code block | ◐ code block |
| Summary with severity table | ✅ check run | ◐ summary note | ◐ summary thread | ✅ Code Insights report | ✅ Code Insights report | ◐ review body | ◐ review body |
| Status on the head commit | ✅ check run | ◐ commit status | ◐ commit status | ✅ Code Insights report with annotations | ✅ Code Insights report with annotations | ◐ commit status | ◐ commit status |
| Block merge on critical findings | ✅ | ◐ failed status, if required | ◐ status branch policy | ◐ failed report, Code Insights merge check (plan dependent) | ◐ failed report, Code Insights merge check | ◐ failed status, if required | ◐ failed status, if required |
| Resolve threads of fixed findings | ✅ | ✅ | ✅ status Fixed | ✅ | ✅ threadResolved | ✅ | — no API |
| Incremental review of new commits | ✅ | ✅ compare API | ✅ | ✅ diff between two commits | ✅ compare diff | ◐ full pull request diff | ◐ full pull request diff |
| Acceptance-criteria check | ✅ | ✅ | — | — via Jira links | — via Jira links | — | — |
| SARIF upload / code scanning | ✅ | — skipped, audited | — skipped, audited | — skipped, audited | — skipped, audited | — skipped, audited | — skipped, audited |
| CI failure analysis | ✅ GitHub Actions logs; other check apps from summary and annotations | — | — | — | — | — | — |
| Draft pull requests | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ WIP: prefix | ✅ WIP: prefix |
| Large diffs | ✅ | ✅ | ◐ computed (≤ 300 files, ≤ 1 MB) | ✅ git diff | ◐ server line cap (truncated) | ✅ git diff | ✅ git diff |
Triage, replies and chat ​
| Capability | GH | GL | AZ | BBC | BBDC | GT | FJ |
|---|---|---|---|---|---|---|---|
| Issue triage (labels, duplicates, needs-info) | ✅ | ✅ | — | — use Jira | — use Jira | ✅ labels by name | ✅ labels by name |
| Grounded replies on issues | ✅ | ✅ | — | — | — | ✅ | ✅ |
| Replies and chat on pull requests | ✅ | ✅ | ✅ | ✅ threaded | ✅ threaded | ◐ pull request comments (no API to reply in a review conversation) | ◐ pull request comments |
| Issue sync on connect | ✅ | ✅ | — | — | — | ✅ | ✅ |
| Pull request labels | ✅ | ✅ | ✅ tags | — | — | ✅ | ✅ |
Assignment ​
| Capability | GH | GL | AZ | BBC | BBDC | GT | FJ |
|---|---|---|---|---|---|---|---|
| Request reviewers | ✅ users and teams | ◐ users | ◐ optional reviewers | ◐ workspace members | ✅ users | ◐ users | ◐ users |
| Assign issues | ✅ | ✅ | — | — | — | ✅ | ✅ |
| Code owners | ✅ | ✅ sections | — | — Bitbucket adds them itself | — Bitbucket adds them itself | — regex CODEOWNERS, requested by Gitea | — requested by Forgejo |
| Required reviewers / approval rules | ✅ | ✅ | ✅ | ✅ merge checks | ✅ merge checks | ✅ branch protection | ✅ branch protection |
| Expertise from history | ✅ | ◐ | ◐ | ◐ commits only | ◐ commits by email | ◐ commits only | ◐ commits only |
| Availability status and open load | ✅ | ◐ busy status | — | — | — | — | — |
| Team members | ✅ | ✅ | ✅ | — | — | ✅ organisation teams | ✅ organisation teams |
Issue → PR ​
| Capability | GH | GL | AZ | BBC | BBDC | GT | FJ |
|---|---|---|---|---|---|---|---|
| Draft PR from an issue | ✅ fixer app | — | — | — | — | — | — |
Platform ​
| Capability | GH | GL | AZ | BBC | BBDC | GT | FJ |
|---|---|---|---|---|---|---|---|
| Self-managed / server | ✅ GHES | ✅ | ✅ Server | n/a | ✅ 9.4 LTS+ | ✅ 1.26+ | ✅ 15 LTS+ |
| Authentication | GitHub App | access tokens | PAT, Entra app | repository, project or workspace access token | HTTP access token | access token | access token |
| Webhook verification | HMAC SHA-256 | X-Gitlab-Token | basic auth | X-Hub-Signature HMAC SHA-256 | X-Hub-Signature HMAC SHA-256 | X-Gitea-Signature HMAC SHA-256 | X-Forgejo-Signature HMAC SHA-256 |
| Idempotency key | X-GitHub-Delivery | X-Gitlab-Event-UUID | notification id | X-Request-UUID | X-Request-Id | X-Gitea-Delivery | X-Forgejo-Delivery |
| Rate limits honoured | ✅ | RateLimit-* | X-RateLimit-* | Retry-After, backoff on 429 | Retry-After, backoff on 429 | none sent by default | none sent by default |
| Bot identity | app slug | token user | token identity | ◐ unknown (app user, [bot]) | token user (X-AUSERNAME) | token user | token user |
| Verified with | live app, fixtures | fixtures, GitLab CE container | fixtures | fixtures | fixtures | fixtures, Gitea 28 container | fixtures, Forgejo 15 container |