In brief
SOC 2 is in progress
We are not SOC 2 certified yet. Ask us and we will share our current security posture, the audit timeline, our DPA and the subprocessor list.
Gravity holds documentation that customers, partners and coding agents act on. That makes three questions matter more than any feature: who can sign in, who can change what readers see, and whether you can show, later, exactly what was published and who approved it.
This brief answers them as the platform works today. Where something is not available yet, it says so. The ledger below is the short version; each line links to the chapter that explains it.
Controls at a glance
- Single sign-onSAML or OIDC through your identity provider; can be required for your domainAvailable
- Multi-factor sign-inAuthenticator codes with backup codes, or your identity provider’s policyAvailable
- Automatic user provisioning (SCIM)Members are invited by an admin todayNot available yet
- Roles and scoped accessFour roles, granted for the organization or one site, space or collectionAvailable
- Custom rolesRoles are fixed; access is shaped by where a role is grantedNot available yet
- Reviewed publishingChanges reach readers only through an approved change requestAvailable
- Tamper-evident versionsEach published version is hashed and chained to the one beforeAvailable
- Audit logEvery request recorded; filter in the app or read it through the APIAvailable
- Audit log export fileRead it through the API or MCP in the meantimeNot available yet
- Bring your own AI keyYour provider key, encrypted at rest and used only for your callsAvailable
- Revocable agent accessOAuth with consent, revocable grants, every call auditedAvailable
- SOC 2 reportThe audit is in progress; we share the timelineNot available yet
- DPA and subprocessor listShared during your reviewOn request
Sign-in and identity
Members sign in through your identity provider over SAML or OIDC, so joining, leaving and multi-factor rules stay where you already manage them. Single sign-on can be required for your email domain, which removes the password path for your own people entirely.
People who sign in with a password, such as contractors on another domain, can protect it with an authenticator app and one-time backup codes. Passwords and codes are never written to logs.
- EmailGravity looks up how this address signs in.
- Your identity providerSent straight to it over SAML or OIDC. There is no password to try.
- Your policyYour provider’s own rules apply: MFA, device checks, session length.
- Signed inTo your organization, with the role you were given there.
Automatic provisioning through SCIM is not available yet. Today an admin invites each member and gives them a role, and removing a member ends their access to the organization.
Roles and access
There are four roles: Owner, Admin, Editor and Viewer. They are fixed, which keeps a review short: the matrix below is every permission each one holds. Custom roles are not available.
Roles are fixed. Access is shaped by where a role is granted, below.
What shapes access is where a role is granted. A role can be given for the whole organization, or for one site, space or collection. For any page, the grant closest to it applies, whether it is higher or lower than the organization role. Owners and admins keep their role everywhere.
On a page in this collection, they act as
Viewer
The collection grant is the closest to the page, so it wins, even though their organization role is Editor.
- Read
- Edit drafts
- Approve
- Publish
- Manage access
Readers are a separate question from members. Each space decides which audiences may read it: everyone, signed-in readers, developers, or audiences you define and fill by email. A single block can be limited to an audience, so one page can carry a partner-only paragraph without a second copy of the page.
The change record
Editing in Gravity is fast and collaborative, and none of it is visible to readers. A change reaches readers only through a change request: required reviewers compare it with the live page, approval rules decide who must sign off, and only someone whose role includes publishing can publish it.
Publishing is the boundary. Everything on the reader’s side of it is versioned, attributed and recorded.
Each publish creates a new numbered version. The version stores a hash of its content, the hash of the version before it, who published it and when, signed by Gravity’s server. Changing an old version later, even directly in the database, breaks the chain from that point on, and verification says where.
- v12Keys expire after 90 days.a.okafor · Mar 4 · hash b4f1ef31
- v13Keys expire after 60 days.r.santos · Apr 18 · hash 4657536b
- v14Keys expire after 60 days. Rotate them early.a.okafor · Jun 2 · hash 88e901bc
- v15Keys expire after 30 days. Rotate them early.m.ruiz · Sep 9 · hash 7525150c
Alongside the versions, the audit log records every request made to the platform, by people, tokens and agents alike: who made it, the action, the resource, whether it succeeded or was refused, when, how long it took, and from which address and client. Refusals are recorded too, which is often what an investigation needs.
- When
- 2026-10-08 13:41:05 UTC
- Who
- j.lee@acme.com
- Action
- proposals.publish
- On
- Change request #479
- Result
- Refused: FORBIDDEN
- Took
- 41 ms
- From
- 198.51.100.31
- Client
- Safari on macOS
Your code and your data
Gravity writes documentation from your code without taking the code. The CLI runs inside your CI, where the repository already is, and sends Gravity the docs it writes, each block pointing to the file, lines and commit it came from. Your repository is not cloned to our servers.
Passes that write prose send requests through Gravity’s AI gateway, and those requests can contain code snippets. The gateway passes them to the model provider and keeps neither the request nor the reply, only a record of who, when, which model and how many tokens.
From your repository to your readers
AI agents
Coding agents and assistants reach your docs over MCP. Access is granted the way you would grant it to an app: a person approves the connection on a consent screen, every time, and the agent then acts with that person’s permissions and no more.
The person can disconnect it at any time. Revocation is checked on every call, so the next request is refused, not the next day’s. Each call, each approval and each revocation is in the audit log.
docs.acme.com asks for your approval
Allow “Coding agent” to act as m.ruiz@acme.com?
It will read and search what your role allows, and nothing more. You can disconnect it at any time.
Recorded in the audit log
- Nothing yet. No agent reaches your docs until a person approves it.
Operations
Your data is backed up every night, and each backup is kept for 35 days. Recent changes can also be recovered to a point in time, which covers mistakes noticed the same day. Connections to Gravity and from Gravity to AI providers are encrypted.
Licences change over a contract’s life, so they are designed never to strand anything. If a licensed feature lapses, what it holds stays readable, and revoking access or removing items keeps working. You are never left with data you cannot reach or a credential you cannot turn off.
Compliance and answers
Our SOC 2 audit is in progress, and we will not describe Gravity as certified until it is. During your review we share our current security posture and the audit timeline, a data processing agreement and the subprocessor list.
The answers below are written for questionnaires. Search them, copy one, or copy them all. If yours asks something they do not cover, send it to us.
Do you support single sign-on?
Yes. Members sign in through your identity provider over SAML or OIDC, and single sign-on can be required for your email domain so there is no password path.
Do you support multi-factor authentication?
Yes. Password sign-in supports authenticator-app codes with one-time backup codes. With single sign-on, your identity provider’s multi-factor policy applies.
Do you support SCIM provisioning?
Not yet. Members are invited by an admin and given a role.
How is access controlled?
Four roles (Owner, Admin, Editor, Viewer), granted for the whole organization or for one site, space or collection. For any page, the most specific grant applies. Owners and admins keep their role everywhere.
Can we define custom roles?
Not today. Roles are fixed; access is shaped by where each role is granted, and a Developer tag adds developer-only content and, on Editor and above, repository management.
Is there an audit log?
Yes. Every request is recorded with the person, the action, the resource, the result, the time, how long it took, the IP address and the client. It can be filtered in the app and read through the API and MCP.
Can the audit log be exported?
There is no export file yet. Your tools can read the full log through the API, filtered by person, action, resource, result and date.
Can published content be changed without a trace?
No. Each published version is stored with a hash of its content, chained to the version before it and signed by Gravity’s server. Verifying the chain shows whether any version changed after it was published.
Who can publish?
Changes reach readers only through a change request. Approval rules decide who must approve, and only people whose role includes publishing can publish.
Do you store our source code?
The CLI reads your code inside your own CI. Gravity stores the docs it writes, each pointing to the file, lines and commit it came from, not your repository. AI requests can include code snippets; they pass through to the model provider and are not stored by Gravity.
Is our content used to train AI models?
Gravity does not train models. With your own key, your agreement with that provider applies; Anthropic and OpenAI do not train on API data by default.
How are keys and tokens stored?
AI provider keys are encrypted at rest with AES-256-GCM and decrypted only for the call. Repository and API tokens are stored as hashes, and every token can be revoked.
How do AI agents get access?
Through MCP with OAuth. A person approves each connection on a consent screen, the agent acts with that person’s permissions, refresh tokens rotate, and the person can revoke it at any time. Every call is recorded in the audit log.
How is data backed up?
Nightly backups are kept for 35 days, with point-in-time recovery for recent changes. Restores are rehearsed.
What happens if a licensed feature lapses?
Your data stays readable, and revoking access and removing items keep working, so a lapsed licence never traps data or leaves a live credential behind.
Are you SOC 2 certified?
Not yet. The SOC 2 audit is in progress. On request we share our current security posture, the audit timeline, our DPA and the subprocessor list.