Security
How Glattice keeps spaces apart.
Every protected action is enforced on the server, by Postgres row-level security. Bypassing the interface gains an attacker nothing, because the web app, the REST API, the MCP server and every integration hit the same boundary with the same token. This page describes what is actually enforced today — including what we do not have.
Last reviewed: July 26, 2026
Where is the security boundary?
Authorization is not a check in application code that a determined caller could route around. Every table carries row-level security policies, and access is decided by database functions that resolve your membership, your role, the board's visibility and the space's plan. The API is a convenience layer over that boundary, not the boundary itself.
How are tenants kept apart?
All data belongs to exactly one space. Membership is explicit, with four roles — owner, contributor, viewer and billing. Cross-space references are rejected by database triggers rather than by convention, and a board's space cannot be changed once set.
What can an AI agent reach?
The MCP server authenticates with OAuth 2.1 and PKCE, discovered per RFC 9728, and issues a token scoped to the authorizing user. An agent inherits exactly that user's permissions — never more. Write access is refused before a tool runs if the role, the board's visibility or the space's plan does not permit it.
What do errors reveal?
The API answers 401 when you are not authenticated, 404 when a resource exists but you cannot see it, and 403 only when you can see it and lack the role or plan. Returning 403 for an invisible resource would confirm that the identifier is real, so we don't.
Can the audit trail be edited?
Every change to board data is captured by a database trigger into an append-only ledger, stamped with the actor and the interface that made it. The ledger has no write policies and no write grants — not for the app, not for the API, not for us. Card deletion is a soft delete, so a removed card can be restored with its history intact.
What are the rate limits?
The REST API, the MCP server and the AI command bar each carry server-side limits, returning 429 with Retry-After and rate-limit headers. AI usage is metered per space per month, with a global circuit breaker behind it.
Who owns your data, and can you get it out?
Encrypted in transit and at rest. We do not sell it and we do not train AI models on it. You can export everything as JSON or CSV at any time, on every plan including Free, and a lapsed Team space stays readable by its owner.
What don't we have?
No SOC 2 report, no ISO certification, and no third-party penetration test to publish. Row-level security keeps other tenants and other users out of your data; it does not keep us out — as the operator we can technically read stored content. Client-side encryption that would change that is a stated goal, not a shipped feature, and we will not describe it as one until it is.
9. How do I report a vulnerability?
Email security@glattice.com with details and we will confirm receipt. Please don't test against other people's spaces.
security@glattice.com