Skip to content

Permissions & access

Typillar acts on your behalf in the accounts you connect — Cloudflare, GitHub, and, if your app takes payments, Stripe — so it’s worth being precise about what that access is, what it’s used for, and how to withdraw it. This page is the reference for all of that.

Cloudflare and GitHub are OAuth connections.

  • You approve each one on the provider’s own screen, not inside Typillar.
  • Typillar receives a revocable token, never your password.
  • You can withdraw the grant at any time, from either side.

Stripe is not. Stripe has no OAuth flow here: if your app takes payments, you paste a Stripe secret key into the project’s Payments settings, and it goes straight into a Cloudflare Secrets Store in your own account — Typillar keeps the key’s address, never its value. That’s a long-lived credential you created, so it’s yours to scope and yours to roll — see Stripe below.

Used to build and run your project on your account: deploy Workers, create the resources a feature needs, publish live URLs, run the agent’s model, and read the live app’s request counts for the console. Everything created is in your account and visible in your Cloudflare dashboard. See Connect Cloudflare.

Cloudflare scopes are granted incrementally. Connecting grants the baseline below and nothing more. The first time a feature needs storage, email or a domain, Typillar returns you to Cloudflare’s screen to grant that one extra permission.

Baseline — granted when you connect:

Scope What it’s for
account-settings.read Read the account and its workers.dev subdomain
account-analytics.read Read the live app’s request and error counts, for the console
workers-scripts.write Deploy and manage your project’s Workers
ai.write Run the agent’s model on Workers AI
aig.run Reach the frontier models (Claude, GPT, Gemini) through AI Gateway, on your Cloudflare billing
browser-rendering.write Render pages headlessly for the Render capability
offline_access Refresh the token silently, so the connection doesn’t expire mid-build

Incremental — asked for the first time a feature needs it:

Feature Scopes What it’s for
Data and sign-in d1.write, vectorize.write Create the project’s D1 database, and the vector index when a collection ranks by meaning
Sign-in with Google or GitHub secrets-store.write Hold the OAuth client secret you paste in your account’s own Secrets Store
Payments secrets-store.write Hold your Stripe secret key in your account’s own Secrets Store
Outside APIs secrets-store.write Hold each connection’s API key in your account’s own Secrets Store
Files, and project assets workers-r2.write Create and manage the project’s R2 buckets
AI ai.write Already in the baseline — no second consent needed
Email email-sending.write, email-routing-rule.write, zone.read, zone-settings.read, zone-settings.write, dns.read Send mail, receive mail, and find and read the zone it attaches to
Calls calls.read, calls.write, stream.write Find and create the SFU app a call joins
Queue queues.write Create and manage the project’s Cloudflare Queue
Video stream.write Upload and manage video on Cloudflare Stream
Bot check challenge-widgets.write Create the project’s Turnstile widget
Custom domains zone.write, dns.write, workers-routes.write Read the zone’s status, write the DNS record, route the app to it

The domain must already be a zone on your Cloudflare account. Typillar does not create zones.

Used to commit generated code to a repository you own and maintain its history. Be aware that this grant is not repository-scoped: Typillar connects through a GitHub OAuth app and requests the repo scope, which GitHub defines as full control of your public and private repositories. GitHub does not offer a per-repository choice for that scope.

Typillar only ever writes to the repositories it creates for your projects, and it creates them on the account that authorized the connection — not in an organization. But the grant is broader than that, and you should size it accordingly — if you want a hard boundary, authorize from a GitHub account that holds nothing else. GitHub is optional; see Connect GitHub.

If a project uses payments, you paste your Stripe secret key into the project’s Payments settings. It is not kept by Typillar at all, encrypted or otherwise — it goes straight into a Cloudflare Secrets Store in your own account, and is used from there to register the project’s webhook endpoint and create checkout sessions on your Stripe account. Money moves through your account, never Typillar’s. The signing secret Stripe returns for that endpoint is stored the same way — you never handle it, and Typillar never holds it.

Because this is a key you issue rather than a grant you approve, the bounding is yours to do: Stripe lets you create a restricted key, and the Payments tab tests the one you save against exactly the permissions it needs, naming anything missing. Roll the key in your Stripe dashboard to kill it.

Typillar never touches a resource it didn’t create

Section titled “Typillar never touches a resource it didn’t create”

Everything Typillar creates in your Cloudflare account — a Worker, a D1 database, an R2 bucket, a Vectorize index — is written into that project’s resource registry at the moment it is created. That registry is the only claim of ownership Typillar has, and it is checked before every write to an existing resource: if the resource isn’t in the registry, Typillar treats it as someone else’s and refuses to touch it.

The check has no permissive default. A client that comes up without a registry doesn’t get the benefit of the doubt — it fails closed and can write to nothing at all. Removal works the same way: a Worker is only taken down or un-routed if it carries Typillar’s own marker for that project. A Worker of the same name that you deployed yourself is left alone.

So an account with existing Workers, databases and zones is safe to connect. Typillar builds beside what’s already there. It does not adopt it, rename it, or delete it.

Settings → Activity lists every call Typillar has made against your Cloudflare and GitHub accounts on your behalf: what it did, to which resource, and whether it succeeded. Nothing Typillar does to your accounts is invisible to you.

Connections belong to your organization, not to a single login — everyone in the organization builds against the same connected accounts. Owners and admins connect, disconnect, and rebind accounts, and manage billing; members build against those connections but cannot change them. Remove a member and their access to the organization’s accounts goes with them.

The simplest way to reason about Typillar’s access is the ownership split:

  • Typillar’s control plane coordinates work.
  • Your infrastructure executes and stores it.

Typillar does not host your project, store your application data, or run your inference — so its access exists to act on your resources, not to copy them into ours. See What you own.

The resource guard above is one instance of a rule that holds throughout: the default is “deny unless explicitly allowed,” never the reverse. Operator access to Typillar’s own back-office is gated the same way — if the gate can’t positively verify an authorized operator, it serves nothing.

You can revoke at any time, and from either end:

Connection Revoke from Typillar Revoke from the provider
Cloudflare Settings → Connections → Disconnect Remove the app in Cloudflare settings
GitHub Settings → Connections → Disconnect Remove the app in GitHub settings
Stripe Turn Payments off for the project Roll the key in your Stripe dashboard

Disconnecting deletes Typillar’s stored token for that account, so it can make no further calls on your behalf. It does not tell the provider to invalidate the token — for that, revoke on the provider’s side too. Turning Payments off stops Typillar using your Stripe key, but the key itself stays in your Secrets Store until you replace it; roll it in Stripe if you need it dead.

Revoking stops further changes immediately. Anything already deployed keeps running — it lives in your account, so disconnecting Typillar never tears your project down.