> ## Documentation Index
> Fetch the complete documentation index at: https://docs.plannotator.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Plannotator OSS Privacy and Data Flow

> What Plannotator OSS keeps locally, which automatic and optional network requests it makes, and how sharing and hosted products change the data boundary.

Plannotator OSS runs locally and does not send Plannotator usage telemetry or analytics. Plans, documents, diffs, annotations, drafts, history, and configuration stay on your computer by default. Some automatic and optional features contact GitHub, your Git remote, a URL, an AI provider, or a hosted sharing service.

<Note>
  This page covers the open-source CLI and browser UI. [Workspaces](https://help.plannotator.ai/workspaces/) is a hosted product. Documents created or uploaded there are sent to its service, so the local-only statements on this page do not apply to that workflow.
</Note>

## What stays local

Each review runs through a temporary HTTP server on your computer. Local mode binds to `127.0.0.1`. The browser reads the document or diff from that server and returns your decision to it.

Plannotator can write these local records:

| Data                                                                                      | Local location or lifetime                                                                                                                  |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Configuration, session records, saved plans, document history, drafts, and Guided Reviews | Under the active Plannotator data directory. This is normally `~/.plannotator`.                                                             |
| Theme, layout, panel state, and other browser preferences or recovery data                | Browser storage for each Plannotator origin and port. This can include functional cookies, `localStorage`, and tab-scoped `sessionStorage`. |
| Pasted or uploaded feedback images                                                        | Temporary local files. The returned feedback contains the image name and path.                                                              |
| Pull request or merge request checkout                                                    | A temporary Git worktree or shallow clone when local checkout is enabled. Plannotator removes it when the review session ends.              |

Document history can contain full copies of opened files. Disable it before opening sensitive files when those copies are not acceptable. See [Version history](/open-source/workflows/version-history#disable-document-annotation-history).

Remote mode binds the unauthenticated server to `0.0.0.0`. Do not expose that port to the public internet or an untrusted network. Use SSH forwarding or a trusted development environment. See [Local server and API](/open-source/reference/local-api#security-boundary).

## Automatic GitHub release check

Each time a plan review, annotate, archive, share-portal, or code-review surface loads, it requests the latest release record from:

```text theme={null}
https://api.github.com/repos/backnotprop/plannotator/releases/latest
```

The request compares the installed version with the current GitHub release. It does not include the reviewed document, diff, annotations, or a usage-event payload. GitHub receives the request and the network metadata normally sent with it. Plannotator OSS does not currently provide a setting to disable this release check. Dismissing an update notice hides that release notice but does not stop later checks.

This request is an update check, not usage telemetry. Plannotator does not send a separate event when you open a review, add an annotation, approve, dismiss, or send feedback.

## Other automatic network access

For a local Git review, Plannotator may run `git ls-remote origin` in the background to identify the remote default branch and report a stale local baseline. This contacts the Git host configured as `origin`, but it does not send the local diff. Choosing the in-app fetch action runs `git fetch`.

The installer downloads the selected Plannotator binary and checksum from GitHub Releases. Installing the latest version first queries GitHub's API to resolve the release tag. If available, it sends a token from `GITHUB_TOKEN`, `GH_TOKEN`, or `gh auth token` to that API. Pinning `--version` skips that API lookup, but the binary and checksum still come from GitHub Releases.

A full install can also contact GitHub for integration files, Ataraxy-Labs/sem for the optional `sem` sidecar, and npm for Pi, selected skills, or the managed agent-terminal runtime. Provenance verification, when enabled, also contacts GitHub through `gh`. Minimal mode and the applicable skip flags omit their optional components.

## Optional outbound requests

| Feature you choose                                   | Where data can go                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Annotate a public URL                                | Plannotator can request the URL directly for content negotiation and send it to Jina Reader for conversion when Jina is enabled. If Jina fails or is disabled, Plannotator fetches the target directly. Local and private-network URLs skip Jina. Browser authentication cookies are not forwarded.                                                                                                                                                                     |
| Review a GitHub pull request or GitLab merge request | The authenticated `gh` or `glab` CLI and Git configuration retrieve provider metadata, diffs, comments, checks, content, and related refs. Posting a review or changing provider-side state sends the selected action to that provider.                                                                                                                                                                                                                                 |
| Ask AI, Agent Reviews, Code Tour, or Guided Review   | Plannotator launches a configured AI provider or installed agent CLI. It can send prompts, selected review context, and repository content to that provider. Plannotator does not route the request through a Plannotator-operated model proxy. Provider permissions and retention follow that CLI and account. Claude Ask AI allows WebSearch by default, so a question can also send a search query to Anthropic's search service and return third-party web results. |
| Start the embedded annotate terminal                 | Plannotator launches a new local agent CLI process in the review directory. The agent can contact its configured provider. It is not the original agent session that opened Plannotator.                                                                                                                                                                                                                                                                                |
| Use the deprecated OSS sharing flow                  | The share portal serves the browser application. A URL-fragment share keeps the review payload in the fragment. Markdown short links upload encrypted ciphertext after confirmation. Local raw HTML can upload through a share or callback action, and remote raw HTML uploads automatically at session creation. See [Sharing](/open-source/workflows/sharing).                                                                                                        |
| Use Workspaces                                       | Documents and collaboration activity use the hosted Workspaces service. See [Workspaces Help](https://help.plannotator.ai/workspaces/) for that product's behavior.                                                                                                                                                                                                                                                                                                     |

Local Git commit review can look up commit-author avatars. For GitHub remotes, Plannotator fetches recent commit metadata and matches returned email addresses locally; it does not send the local commit-author email to GitHub for that match. For GitLab remotes, it sends commit-author emails to the configured GitLab instance's avatar endpoint, one email per request and up to ten requests in parallel per lookup round. Overflow is retried in later rounds. If a match is found, the browser requests the returned image URL from GitHub, GitLab, Gravatar, or another avatar host.

Raw local HTML has another boundary: scripts inside the sandboxed document can still make outbound network requests. Open only HTML you trust, or use `--markdown` to remove scripts before annotation. See [Annotate HTML](/open-source/workflows/html#open-rendered-html).

Rendered plans, documents, raw HTML, and hosted pull-request descriptions can request remote images, video, fonts, or other assets they reference. Selecting a hosted code-review font can contact Google Fonts or jsDelivr. Opening an in-app help video loads a privacy-enhanced YouTube embed.

A share-link creator can configure an HTTP or HTTPS callback and a token. Choosing **Approve** or **Send Feedback** in that shared review posts the action, token, and annotated share URL to the callback. For an encrypted short link, that URL can include the fragment decryption key. Trust the callback with the shared content and key, and prefer HTTPS.

## Reduce outbound access

* Use local files instead of URL annotation.
* Set `PLANNOTATOR_AI=disabled` to remove Ask AI, Agent Reviews, and Guided Review.
* Set `PLANNOTATOR_SHARE=disabled` to hide OSS share and import actions.
* Review local code changes instead of a provider pull-request URL.
* Self-host the share portal and paste service when the deprecated OSS sharing flow is still required.

These controls do not disable the automatic GitHub release check.

Last verified on July 31, 2026, using Plannotator product commit `7cd023c`. Maintained by the Plannotator project.
