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.
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.
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 tomain 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.
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.
Evidence and limitations
- Latest release artifacts and checksums
- First SBOM-enabled release: v0.27.3
- Release attestations
- Release and security workflow source
- ZAP DAST workflow and run history
- GitHub Actions history
- OSS privacy and data flow
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.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.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.aa0bf86. Maintained by the Plannotator project.