Docs / Security and data

Security and data

Agents get exactly the scopes the owner grants. Money and provider keys stay with the owner.

Scopes

account:read
Read account profile, plans and limits
app:read
Read apps, components, releases and jobs
app:write
Create and configure apps and components
deploy:write
Upload source and deploy releases
logs:read
Read build and runtime logs
secrets:write
Set runtime configuration values (never read them back)
billing:read
Read entitlements, balance, usage and forecasts
billing:write
Create checkout and top-up sessions for the owner to complete
spending:execute
Start paid provisioning within the approved budget
domains:purchase
Quote and request domain purchases the owner has authorized
export:read
Create and download exports and migration guides
database:write
Apply schema migrations, read the app database and restore available backups on eligible plans
mcp
Connect through the remote MCP endpoint

Rules that never bend

  • An agent works in one app at a time. Agents select another workspace app with switch_app, without asking you. Existing app-bound credentials cannot switch.
  • App and service removal requires an owner confirmation, or is blocked by app policy. Database migrations can delete tables and data. Only the owner can change app protections.
  • Provider master credentials are never issued to agents; per-app keys are stored encrypted and never returned.
  • Payments, top-ups, domain purchases and provider onboarding return an action for the owner; agents cannot complete them.
  • Every action is audited with its actor (human, agent, OAuth client, system).
  • Cross-account ids answer 404, never 403, so nothing is enumerable.
  • Every write goes through the same authorization as the dashboard.

Data and leaving

Your app's database is a dedicated Postgres database with row-level security. Exports give you source snapshots, a portable database dump with checksums, users and a migration guide; paused trials keep data for 30 days. Deleting an app retires resources after 30 days unless you ask for immediate removal.

Operations

Liveness at /healthz; service checks at /status.json. The control plane monitors worker liveness, stuck jobs, webhook backlog and provider inventory every 5 minutes and alerts the operator. Public status: /status.