Skip to content

Security: AffPapa/neclip

SECURITY.md

Security and privacy

Please report a vulnerability through GitHub Private Vulnerability Reporting. Do not include real clipboard contents in a public issue.

NeClip stores history locally in Application Support and stores images without automatic content recognition, makes no automatic network requests, and uses the network only when the user explicitly chooses “Check for Updates”.

Release binaries are accepted only after Developer ID signing, Apple notarization, stapling, Gatekeeper assessment and published SHA-256 verification. The only supported public release is v3.0.1, with immutable assets and tag. Older releases remain superseded and are retained for rollback. GitHub also checks Swift and workflow source with CodeQL, allows only GitHub-owned Actions referenced by full SHA and monitors the exact SwiftPM dependency for vulnerabilities. Branch and repository rules are verified through an authenticated GitHub release gate; this document does not infer their current state from an unauthenticated API.

Backup files contain plaintext history and snippets. Owner-only permissions are established before SQLite writes, and completed snapshots are published by atomic replacement. These permissions are not encryption: keep backups in trusted locations and never attach them to public issues. Restore validates and copies records into an app-created schema rather than importing foreign tables/triggers. See the 2.8.4 audit coverage and limitations.

Every push, pull request and weekly scheduled run also executes a fully redacted Gitleaks scan over both the publishable working tree and every fetched Git ref. The workflow downloads a fixed Gitleaks version and verifies the exact archive SHA-256 before execution. It receives read-only repository permission, does not use repository secrets and never runs through pull_request_target.

To run the same gate locally, install Gitleaks and execute:

scripts/secret-scan.sh

The repository ignores local environment files, signing keys, Keychains, provisioning profiles, clipboard databases, logs and release archives. These rules are defense in depth, not a substitute for revoking a credential: if a real secret is ever committed, revoke it at the provider first, then remove it from Git history and public artifacts.

There aren't any published security advisories