Skip to content

Core concepts

Security model

What the Pastepile MCP server can and cannot touch: local execution, zero-knowledge encryption boundaries, and why protected pastes can never leak into a model context.

1 min read · Updated

The security model has one guiding rule: the server can never read what Pastepile itself cannot read.

Trust boundaries

  • The server runs on your machine, launched by your MCP client. It talks to exactly one host: https://pastepile.com (or the deployment you set via PASTEPILE_API).
  • The API key is read from the environment, sent as an X-API-Key header, and never logged, echoed back to the model, or persisted.
  • Tool failures return as model-visible error text, never crashes, and the server writes nothing to disk.
  • The package has zero dependencies, so its supply-chain surface is the package itself, which ships as readable, unbuilt source.

Zero-knowledge content stays zero-knowledge

Pastepile's end-to-end encrypted pastes keep the decryption key in the URL fragment, which browsers never send to the server. The API cannot decrypt them, therefore the MCP server cannot either. The same boundary protects other guarded content:

Paste typeWhat `pastepile_get` returns
End-to-end encryptedA refusal naming the reason (encrypted); content never reaches the model
Password-protectedA refusal (password_protected); the API has no password path for automated clients
Burn-after-readA refusal (burn_after_read); automated reads must not destroy one-time secrets
Sealed time capsuleA refusal (sealed) until the unlock time passes
This is enforced server-side, not by the MCP wrapper: no alternative client, prompt injection, or bug in this package can bypass it.

Handling secrets

  • Never ask an assistant to save credentials as a plain paste. Pastes are readable by anyone holding the URL.
  • For secret material, use the web app's encrypted pastes: they are deliberately unreadable through this API.
  • The paste viewer's Content Intelligence flags private keys and credentials on sight, but the honest advice is simpler: keep secrets out of plaintext pastes entirely.

Related documentation