Skip to main content
Plannotator OSS runs on your computer by default. It does not collect usage telemetry or analytics, and an ordinary local review does not upload your plan, document, diff, annotations, or feedback to Plannotator. The project also publishes verifiable release artifacts and runs automated security checks against its source, dependencies, secrets, and GitHub configuration.

Data and network boundaries

Local by default

A normal session uses a temporary HTTP server bound to 127.0.0.1. Review content and local records stay on your computer.

No product telemetry

Plannotator OSS does not send usage events or analytics when you open, annotate, approve, dismiss, or send feedback.

Remote access is optional

Remote mode changes the bind address and does not add authentication. Use a trusted path such as Tailscale or SSH forwarding.

Outbound features are explicit

URL annotation, hosted pull requests, AI providers, sharing, and Workspaces can contact another service when you choose to use them.
Plannotator checks GitHub for the latest release when an app surface loads, and a local Git review can contact its configured origin. These requests do not include the reviewed content. See Privacy and data flow for the complete list of automatic and optional network requests. Set PLANNOTATOR_SHARE=disabled to hide OSS share and import actions. Set PLANNOTATOR_AI=disabled to remove AI-backed features and their provider routes. Ordinary local plan, document, and code review still work.

Release integrity

For a release tag, the workflow builds and tests the artifacts, generates and scans the SBOM, attests the release, and then publishes it.

GitHub Actions

Runs the public release workflow from a version tag on main.

Tests and smoke runs

Type-checks, tests, builds, and runs binaries and installers on Linux, macOS, and Windows.

SHA-256

Generates a matching checksum file for every release binary.

Sigstore

Creates GitHub attestations for build provenance and the release SBOM.

GitHub Releases

Publishes release assets only after tests, smoke runs, the Grype policy, and attestations complete.

npm trusted publishing

Publishes prebuilt package tarballs from a separate OIDC-authorized job with npm provenance.
The workflow uses Syft to generate a CycloneDX SBOM. Grype must pass the release policy before the workflow creates the attestations. Release tags must point to a commit on main and match the version in the release manifests. The GitHub Release is published only after the attestations exist. v0.27.3 was the first release to complete this pipeline. It published a CycloneDX 1.6 SBOM and a matching checksum. Its binaries have SLSA provenance and CycloneDX SBOM attestations. The SBOM describes the release-wide inventory of locked inputs and dependencies. Bun standalone binaries do not expose their bundled JavaScript package metadata to Syft. The SBOM is not an exact runtime inventory for each binary. Use Pin or verify a release to verify installer provenance or download and verify the SBOM evidence.

Automated security checks

On every pull request to main and every push to main, the Security Scanning workflow runs Gitleaks, zizmor, Semgrep, and Trivy. A weekly scheduled run checks for drift. Trusted runs upload SARIF results to GitHub Code Scanning.

GitHub secret scanning

Detects known secret formats. Push protection stops matched credentials before they land.

Dependabot

Monitors dependencies, opens security updates, and runs routine Bun update checks each week.

Gitleaks

Checks pull-request and push commit ranges for secrets, with scheduled full-history scans.

zizmor

Audits GitHub Actions workflows, local actions, and Dependabot configuration offline.

Semgrep CE

Runs repository-owned source rules offline with no Semgrep Cloud upload.

Trivy

Checks committed dependency locks and filesystem or infrastructure configuration against pinned scanner and policy versions.

OWASP ZAP DAST

OWASP ZAP runs a passive baseline each week. A maintainer can also start the workflow manually. The workflow uses a disposable annotate session on an internal-only Docker network. A read-only guard rejects state-changing requests and unapproved paths.
The Security Scanning and ZAP DAST workflows are in monitor mode. Tool and evidence failures fail their jobs. Findings appear in GitHub Code Scanning or retained workflow artifacts, but they do not block a merge or release.

Report a vulnerability privately

Do not open a public issue for a suspected vulnerability.

Open a private vulnerability report

Send the affected version, reproduction steps, impact, required preconditions, and any known workaround through GitHub’s private reporting form.
Security fixes are provided for the latest released version. See the repository security policy for the supported-version and disclosure policy.

Evidence and limitations

Automated checks reduce risk; they do not prove that the software has no vulnerabilities. Plannotator does not claim SOC 2, ISO 27001, or another security certification for the OSS project. The support policy covers the latest release, and this page does not describe the hosted Workspaces product.

Appendix: security pipeline

These diagrams show when each security control runs and how its evidence moves through the project.

Release trust chain

A release tag generates the SBOM and runs the Grype policy before the workflow creates attestations and publishes the release.
A vertical release trust chain shows a version tag building artifacts, generating a Syft SBOM, passing a Grype scan, creating Sigstore attestations, publishing, and user verification.

Security on every code change

The build and security workflows start from the same pull request or push. The security scanners run independently from the build workflow.
A pull request or push starts build tests and four security scans: Gitleaks for secrets, Semgrep for source code, Trivy for dependencies, and zizmor for workflows. Findings upload to GitHub Code Scanning.

Scheduled security testing

The weekly workflows scan the repository and a disposable application instance. The ZAP workflow scans only the disposable instance inside an isolated CI network.
Weekly security testing runs a full repository scan and an OWASP ZAP passive scan against a disposable application inside an isolated CI network, then retains the reports.
Last verified on August 13, 2026, using Plannotator product commit aa0bf86. Maintained by the Plannotator project.
Last modified on August 13, 2026