// TRUST
Security
This page describes how ArtifactBridge is built and operated. It states only the controls that exist in the Service today. It does not claim a certification, an audit result, a test schedule, or an availability number. Where a control belongs to an infrastructure provider, this page names the provider.
1. Architecture and Data-Flow Boundaries
ArtifactBridge runs as one application with three boundaries:
- Edge application: a Cloudflare Worker serves the HTTP API, the Model Context Protocol (MCP) server, and the OAuth endpoints. The web application is a static bundle served from Cloudflare's asset storage. Only the API, MCP, OAuth, and installer paths run application code; every other path is static.
- Database: Supabase hosts authentication and the Postgres database that holds accounts, workspaces, managed documents, versions, comments, and audit records.
- Connection broker: Pipedream holds the credentials for the external accounts you connect (Google Drive, Notion, Slack) and performs the calls to those sources.
Agents reach the Service only through the MCP server and the HTTP API. Both require an authenticated, workspace-scoped credential. An agent can create a document and update a working document directly. The Service records every such change as a new version with the agent as the author, so you can read it, compare it, and revert it. A change to published or managed content is different: the agent submits a proposal, and a human must accept the proposal before the change takes effect. ArtifactBridge does not write back to an external source unless you or an agent you authorized starts that action.
2. Tenant Isolation
Every tenant object belongs to a workspace. Postgres row-level security enforces the workspace boundary in the database, below the application. A request carries either a normal Supabase Auth session or a short-lived ArtifactBridge tenant token that names the workspace. The database function that authorizes the read rejects any token whose claims are incomplete or malformed; it does not fall back to a wider scope.
3. Authentication and Agent Authorization
- Human sign-in: Supabase Auth handles email and Google sign-in.
- Agent authorization: agents connect through OAuth 2.1. Each grant is scoped to a workspace. You can revoke a grant; revocation purges the access tokens issued under it.
- API tokens: an
afb_token carries 256 bits of entropy from the platform cryptographic random generator. The Service shows the raw value once and stores only its SHA-256 hash. It authenticates a request by hashing the presented value and matching the hash. Share-link tokens and workspace-invitation tokens use the same shape and the same hash-only storage.
4. Credential Storage
ArtifactBridge does not store the OAuth credentials of your connected Google, Notion, or Slack accounts. Pipedream holds them. ArtifactBridge stores the connected-account identifier and non-secret metadata that it needs to route a sync. Platform secrets, such as database keys and provider client secrets, are held as deploy-time secrets in Cloudflare. They are not in the source repository.
5. Encryption
Cloudflare terminates TLS for every request to the Service, so data is encrypted in transit. Calls from the Service to Supabase and Pipedream use TLS.
Encryption at rest is a provider control. Supabase encrypts stored database data at rest, and Cloudflare encrypts data at rest in its storage products. See the Supabase security documentation and the Cloudflare compliance documentation for their statements.
6. Logging and Audit Redaction
The Service records audit events for document changes, agent tool calls, and authorization decisions. Cloudflare Workers Logs captures the request logs of the edge application.
A shared redaction function runs before text reaches a log, an error payload, or an audit record. It
removes bearer tokens, afb_ tokens, share tokens, invitation tokens, webhook signing secrets,
OAuth access and refresh tokens, authorization codes, JSON Web Tokens, Supabase configuration values,
environment-style secret assignments, common third-party key formats, URL credentials, URL fragments, and
cookies. Section 5 of the Privacy Policy states how long we keep this data.
7. Rate Limiting
The Service applies per-surface rate limits to the endpoints an unauthenticated caller can reach: the OAuth token endpoint, credential validation, and the webhook receivers. It applies a further limit to workspace invitations, which are not an unauthenticated surface: an invitation request needs a signed-in user who is an owner of the workspace, and the limit bounds the invitation rate per owner and per workspace. Each surface has its own budget, so a flood of one surface cannot consume the budget of another. A throttled response states when the caller may retry.
8. Backup and Recovery
ArtifactBridge stores its data in Supabase-managed Postgres. Backup and recovery follow the platform capabilities of that provider. We do not publish a recovery time objective or a recovery point objective.
9. Deletion Behavior
Disconnecting a source or deleting an account inside ArtifactBridge never edits, archives, or deletes the original document in Google Docs, Notion, or any other external source. When you delete an imported document, the Service records a retention audit event for the deletion. Section 5 of the Privacy Policy states the retention and deletion terms, including the records we must keep to meet a legal obligation.
10. Subprocessors
The subprocessor list names every provider that processes customer data on our behalf, and states the change-notice process.
11. Report a Vulnerability
Send a report to [email protected] with the subject “Security report”. Include the affected URL or endpoint, the steps to reproduce, and the impact you observed. Do not send passwords, tokens, customer data, or executable payloads. Do not access, change, or delete data that does not belong to you. Our security owner controls the review and restricts the report to the people who run it. We confirm receipt and tell you the outcome of our review. We do not operate a paid bounty program.