Please use a private GitHub security advisory. Include the affected route or client, reproduction steps, and likely impact. Do not put credentials, private notes, or an unpatched exploit in a public issue.
- Set a strong
AUTH_SECRETand the exact HTTPSAUTH_URL. - Keep Postgres on a private network.
sslmode=requireencrypts but does not authenticate the server — acceptable for a same-host database; usesslmode=verify-full(withDATABASE_CA_CERTfor a private CA) whenever the database is on another host.DATABASE_TLS_INSECURE=trueis only for loopback development withsslmode=no-verify. - Keep attachment storage private. S3 deployments should enable Block Public
Access and grant the application only object read/write/delete permissions
under the
keep/prefix. - Set
DEPLOY_KNOWN_HOSTSto a separately verified SSH host-key line. Deployment fails closed when the host key changes. - A configured
ANTHROPIC_KEYsends authenticated note text to Anthropic for titles/summaries; setAI_METADATA_ENABLED=falseto keep note text local, and disclose the model use to users when it stays on. Provider and account budgets should also be configured outside the application. - Back up Postgres and object storage with encryption at rest and tested restore procedures. Restrict production logs and database access to operators who need them.
Keep is not end-to-end encrypted. The server can read note content. Signed-in web clients keep account-scoped offline copies in IndexedDB until explicit sign-out or site-data removal; guest notes remain in localStorage. Native Spotlight integration indexes titles, summaries, and tags, but not note bodies.
Public shares are bearer links. Random links carry 128 bits of entropy; vanity links are public names with a 16-character minimum. Revocation stops page, download, and attachment access immediately.
Releases before the private-upload change wrote attachments with public-read
storage permissions and embedded their provider URLs in notes. New uploads are
private and use /api/uploads/<id>. Operators upgrading an existing deployment
should inventory old keep/ objects, remove public ACLs after deciding how to
handle legacy note links, and delete unreferenced public objects.