AuthSpokeAuthSpoke Developers

Authorization Model

Three independent layers — Capability SKUs, Feature Flags and Kill Switches — and how authorization is enforced server-side.

Authorization in AuthSpoke is decided on the server. The client is never the sole gate, so the UI, SDKs, CLI and AI agents all get the same answer.

Four enforcement points#

  1. Authentication — a valid bearer token is required for non-public endpoints.
  2. Tenant isolation — the token's tenant scopes every query. Cross-tenant data is invisible.
  3. Capability SKUs — some endpoints require a licensed capability. Absent it, the API returns 403 capability_not_licensed.
  4. Provider gate — cross-tenant management routes (/support/**) require provider-admin allowlist membership.

Three separate control layers#

A recurring design rule: these are distinct and must never be conflated.

LayerQuestion it answersScopeManaged by
Capability SKUsWhat has this tenant licensed?Per tenantProvider
Feature FlagsIs this functionality rolled out?Per tenantProvider
Kill SwitchesShould we stop this right now?GlobalProvider (also JMX)

See Capability SKUs, Feature Flags and Kill Switches.

Roadmap: the AI Policy engine#

Beyond these platform-level gates, a fine-grained AI Policy engine will decide what each agent may do — tools, MCP access, data classification, model usage — with explainable allow/deny decisions, enforced the same way: server-side.