Security & confidentiality

You'd be putting real business secrets into Pileless — contracts, finances, customer messages. Here's how Pileless is designed to reduce the risk of exposure.

The one thing most customers care about

You control where your files live. By default they're encrypted on Pileless storage. Turn on bring-your-own-cloud and your files go straight to your own storage bucket instead — Pileless works from short-lived references, never permanent copies, so your documents never touch our infrastructure at all.

With bring-your-own-cloud turned on, the file path leaves Pileless entirely:

Your agent asks · waits · resumes Pileless decisions · approvals · audit trail Cloudflare · encrypted You decide desktop · phone Your files contracts · docs · media Your R2 bucket your cloud · your region · not Pileless ✕ files never route through Pileless

The short version

Your agents send Pileless approval requests — Pileless runs no AI and never trains on your content. By default, files in a decision are encrypted on our servers; turn on bring-your-own-cloud and they stay in your own bucket instead, scoped, with every action logged. With bring-your-own-cloud on, if Pileless disappeared tomorrow your files would still be sitting in your own bucket.

Your files: encrypted on our servers, or never on them at all

By default, files in a decision are stored encrypted on Pileless storage (Cloudflare), under the same per-workspace isolation as everything else. If you'd rather we never hold your files at all, turn on bring-your-own-cloud: every file then lives in your own Cloudflare R2 storage bucket, not ours, so a customer document never lands on Pileless infrastructure in the first place. With bring-your-own-cloud on, we reach your files only through short-lived, single-purpose links that expire, and we never hold a permanent copy — keeping your documents out of the blast radius of any Pileless-side incident. Text-only decisions need no bucket either way.

Your workspace is walled off from everyone else's

Every database query is authorized against your workspace on the server before any data is returned — access is never trusted from browser-side permissions alone. Another customer (or their AI) can't address your data.

Least privilege, by default

People and AI assistants start with zero access and get only the exact fields you grant. Sensitive content is stripped out on our server before it's ever sent — it can't be revealed by tampering with the app on the other end. An agent can be told "a high-sensitivity legal approval is blocking you" without being allowed to read the contract.

Hardened against the usual leak paths

  • SSRF guards: outbound fetches are blocked from reaching private/internal destinations, and redirects are validated.
  • Signed webhooks: outbound deliveries are signed so your receiver can verify they genuinely came from Pileless.
  • Scoped, expiring, revocable share links — a link that leaks isn't permanent open access; you can kill it.
  • Rate limiting and input sanitization against probing and injection.

What happens if…

ScenarioResult
Pileless is compromisedFiles are encrypted at rest; with bring-your-own-cloud on, they aren't here at all — they stay in your bucket, reached only through short-lived, single-purpose links.
An agent API key leaksRevoke and reissue it. Keys are stored hashed, so they can't be read out of our database either.
A share link leaksLinks are scoped and expiring — revoke it and it's dead.
Someone spoofs a webhookDeliveries are signed; your receiver rejects anything we didn't send.
Another customer guesses your IDsServer-side workspace authorization returns nothing.

Logged, and encrypted

Every access is recorded in an append-only audit log — the product has no path to edit or delete an entry, so tampering would be evident on review. Your agent API keys are stored hashed (we can't read them back); your BYOC cloud credentials are stored encrypted at rest; all traffic is encrypted in transit.

Where data lives, and for how long

  • Residency: decision metadata and audit records live on Cloudflare infrastructure, encrypted at rest. File contents are encrypted on Pileless storage by default; with bring-your-own-cloud on, they stay in your own bucket, in whatever region you chose.
  • Retention: decisions and audit records are kept for the life of your workspace — an audit trail is only useful if it's complete. With bring-your-own-cloud on, files are yours to delete from your bucket any time; we hold references, not copies.
  • Export & deletion: you can export your workspace data, or have all of it deleted, on request.
  • Recovery: the database has automated point-in-time recovery at the provider layer, so an operational mistake on our side doesn't become your data loss.

Being straight with you

We're an early product and won't pretend otherwise:

  • By default your files are encrypted on our storage (Cloudflare); turn on bring-your-own-cloud and they live in your own cloud, never ours. Either way the decision routing (the question, your answer, and the audit trail) lives in our encrypted database (Cloudflare) under the isolation above. A regulated/enterprise tier that puts even that in your cloud is on the roadmap.
  • We don't have SOC 2 today. Rather than asking you to trust a badge, the architecture keeps your files in your own cloud from day one — reducing what Pileless could expose at all. Third-party testing and SOC 2 are on the roadmap; in the meantime we're glad to do a security walkthrough or sign an NDA/DPA with you directly.

The defenses above are live in the product today.

Set up Bring-Your-Own-Cloud →