Skip to main content
Pass a GitHub pull request or GitLab merge request URL to Plannotator:
From a terminal, use plannotator review followed by the same URL. GitHub Enterprise hosts and GitLab instances on custom domains are supported when their URLs follow the provider’s standard pull-request or merge-request path.

Install and authenticate the provider CLI

Plannotator uses the provider’s command-line tool for authentication, metadata, and diff retrieval. The authenticated account must be able to read the repository. Private repositories work when the corresponding CLI account has access.

Local checkout is the default

Plannotator first loads the provider diff so the browser can open promptly. In the background, it prepares a temporary local checkout for the pull request or merge request. If the current repository matches the URL’s host, owner, and repository, Plannotator fetches the review head into a detached Git worktree. For another repository, it creates a shallow temporary clone with the provider CLI. The temporary checkout is removed when the review session ends. The checkout enables features that need repository files:
  • Ask AI
  • Background agent reviews, Code Tours, and Guided Reviews
  • Code navigation and semantic diff
  • Full-stack comparison for a stacked pull request or merge request
If checkout preparation is still running, these features can become available after the diff opens. If it fails, Plannotator keeps the provider diff available and reports that local-file features are unavailable. Use --no-local when you intentionally want a diff-only review:
--no-local skips the temporary checkout. You can still inspect and annotate the provider diff, but file-aware AI, agent reviews, code navigation, semantic diff, and full-stack comparison are unavailable. --local states the default behavior explicitly.

Choose where the review goes

The review destination appears in the browser. Choose one of these destinations before submitting:
  • Agent produces structured feedback for the coding-agent session that opened Plannotator. A direct terminal launch prints the same result. It does not post to GitHub or GitLab.
  • GitHub or GitLab posts review comments or approval through the authenticated provider CLI. Plannotator reports the completed submission to the invoking agent or terminal.
A new provider review defaults to GitHub or GitLab unless you previously selected Agent. Plannotator remembers the destination for later review sessions. You can switch it in the review controls; pressing Option or Alt twice also toggles the destination. Provider posting applies only to the current pull request or merge request layer, because inline comments must map to lines in that provider diff. If a stacked change offers Full stack, use it to understand or run agents over the whole chain, then return to Layer before posting inline comments. An annotation that cannot map to the provider diff can still be copied or sent to the agent as Markdown.

GitHub and GitLab differences

Both providers support URL review, local checkout, annotations, review submission, and approval. Their platform APIs differ:
  • GitHub can synchronize each file’s viewed state with the pull request. GitLab viewed state stays local to Plannotator.
  • GitHub supports listing and switching pull requests from the review UI. GitLab does not currently provide the equivalent in-session merge-request switcher.
  • GitHub can show a pull-request stack tree. GitLab can identify a stacked merge request and offer Layer or Full stack when a local checkout is available, but it does not show the GitHub-style stack tree.
For help understanding unfamiliar code before you annotate it, see Ask AI during a review. To run a separate review agent over the change, see Run agent reviews. To change the message returned to your agent, see Customize Feedback. Last verified against Plannotator OSS v0.23.1 on July 18, 2026. Maintained by the Plannotator project.
Last modified on July 19, 2026