Least privilege, all the way down

Every route checks a declared permission before it runs, drawn from 32 scopes. An API key carries a subset of them and an optional expiry — never the keys to your whole workspace.

32 permission scopes, API keys limited to a subset of them, an encrypted secret vault, and rate limits you set yourself.

What you get

Platform capabilities

Can I create an API key that only does one thing?

Yes. A key is created with an explicit list of permissions drawn from the 32 available scopes, plus an optional expiry timestamp. A key scoped only to trigger executions cannot read secrets, change members or deploy a workflow.

What happens if an endpoint ships without a permission declared?

It denies every scoped credential. Access is opt-in by declaration rather than opt-out, so a route that never declared a permission grants nothing to an API key or a role — a forgotten annotation fails closed instead of quietly exposing an endpoint.

Can someone read a secret's value just because a workflow uses it?

No. Listing secrets and revealing plaintext are separate permissions. A workflow resolves a secret at runtime, and a teammate can confirm it exists and is referenced correctly, without anyone holding the right to display its value.

Try it on a real workflow