Skip to content

RBAC and permission layers

HTTP and the governance surface are trimmed by role; tool execution has a separate allow / deny / ask rule set. Do not treat “having an approval desk” as a complete permission model.

RoleCapability summary
adminFull access: breaker trip/reset, global config, org writes, retention manual scan, audit rehash
operatorCan chat/execute/trigger; cannot HITL decide; cannot write platform-level config/plugin; cannot trip breaker or run retention scan
approverRough operator superset, plus HITL decide; still cannot write org/global config or trip breaker
readonlySafe read-only methods only (health checks and similar exceptions)

Legacy value ops is treated as operator. Header X-AgentForge-Role participates in resolution when identity is not bound; after binding, the account mapping wins. See Identity and tenant binding.

flowchart LR
Req[HTTP request] --> Role[Resolve role]
Role --> Gate[Route-level RBAC]
Gate --> Exec[Business / tools]
Exec --> Tool[allow/deny/ask]
Tool --> Hitl[HITL when needed]

Role RBAC decides “may this kind of API be called.” Tool rules decide “may the model run this tool, and must a human be asked.” Patterns such as external directories are expressed via permission patterns — not a second HTTP role layer named Read/Write/External.

Role draft tiers (for example readonly / assist / operator) are job templates; they still resolve to the roles above and tool permissions. Product claim: permission isolation.


Related reading: