Docs · Auth & API keys
Auth & API keys
Identity cuts across every pillar — humans, agents, and API callers all act as accountable members of an org.
Signing in
- Email + password — accounts use scrypt-hashed passwords with email activation; forgot/reset flows are governed workflows like everything else.
- Social sign-in — Google, GitHub, X, LinkedIn when configured.
- OIDC SSO — Enterprise Organizations can require their identity provider.
Access is currently invite-based: request access on the site, and approved Organizations start on a 14-day Team trial. Team members join via invites from Account → Team, with seats enforced per plan.
Sessions are HMAC-signed, httpOnly cookies — no tokens in browser storage.
IDE API keys
Your coding agent authenticates as you, with a key you can revoke.
- Console → Account → IDE → mint a key. It's prefixed
csk_and shown once; only a hash is stored. - Put it in your MCP config as
STUDIO_API_KEY(see Build in your IDE). - Requests with
Authorization: Bearer csk_…act as the sponsoring member — same role, same audit trail.
Every action an agent takes through a key lands in Events attributed to that member. Revoke the key and the agent's access ends immediately.
API access
The same two credentials cover programmatic access:
- Session cookie — for same-origin and BFF setups where your server logs in and proxies (the SDK's
bffmode). - Bearer API key — for server-to-server calls to the GraphQL and Workflow APIs.
Never ship either to the browser. The SDK's BFF handlers exist precisely so your frontend talks to your own /api/closure/* routes and credentials stay server-side.
Secrets are not credentials
Connector secrets (CRM tokens, SMTP keys) never travel through chat, MCP arguments, or code. They're collected through governed collect steps in the browser and sealed into the org vault (AES-256-GCM, rotating keyring). Your IDE agent can initiate a connection; only you can complete it.