Roles and permissions

The four organization roles, the four workspace roles, and the exact capability each one holds — taken from the capability table the server checks on every request.

Who can do what in Madebook is decided on three separate axes. Keeping them apart is deliberate: it is what stops a senior job title quietly granting access to every customer's code.

Axis Where it lives What it decides
Platform is_platform_admin on the user account Whether you run Madebook itself. Reaches every organization. Every write it makes outside its own memberships is written to the audit log.
Organization Your role in the organization, held at Bookbag What you may do across one organization. A person in two organizations can hold two different roles.
Workspace Read / write / admin flags on your workspace membership Whether you may read, write or administer one workspace.

An organization capability is necessary, not sufficient. When a request is about a specific workspace, the guard checks the organization capability and your workspace membership flags.

The four organization roles

The roles are Bookbag's shared four, because the organization and its people live at Bookbag and are shared by every product in the family.

Role In one sentence
Owner Created the organization or was handed it. There is exactly one. Only the owner can delete the organization.
Organization admin Runs people, governance, providers, skills, integrations, workspaces and approvals.
Member Does the work in the workspaces they are on.
Viewer Read-only everywhere they can reach.

owner is never assigned. It is transferred. The roles an admin can hand out are admin, member and viewer.

Older role names still appear on rows created before the shared set existed, and Madebook folds them onto the four: lead means admin, engineer means member, and security means viewer. Any role name Madebook does not recognise is treated as viewer — the weakest reading, on purpose.

The capability table

This is the whole table, exactly as the server holds it. A controller asks for a named capability; this decides whether your role has it.

The organization itself

Capability Owner Admin Member Viewer What it gates
org.read ✓ ✓ ✓ ✓ Seeing the organization at all
org.update ✓ ✓ Changing organization settings
org.delete ✓ Deleting the organization
org.manage_members ✓ ✓ Adding, removing and re-roling people. Still in the table, but no Madebook action uses it any more: people are managed at Bookbag account, which applies the same rule.
org.manage_teams ✓ ✓ Teams
org.view_audit ✓ ✓ The audit log
org.manage_tokens ✓ ✓ ✓ Creating and revoking API tokens
org.read_billing ✓ ✓ Seeing billing
org.manage_billing ✓ ✓ Changing billing

Members can mint API tokens. That is intentional — a token is how an engineer's own coding agent talks to Madebook, and an engineer who cannot create one cannot use the product. What the token reaches is limited separately; see API tokens.

Governance

Capability Owner Admin Member Viewer
governance.read ✓ ✓ ✓ ✓
governance.manage_providers ✓ ✓
governance.manage_policies ✓ ✓
governance.manage_compliance ✓ ✓

Everyone can read the rules they are held to. Only owners and admins write them.

Workspaces

Capability Owner Admin Member Viewer Also needs
workspace.create ✓ ✓
workspace.read ✓ ✓ ✓ ✓
workspace.update ✓ ✓ ✓ the workspace admin flag
workspace.delete ✓ ✓ workspace ownership
workspace.manage_members ✓ ✓ ✓ the workspace admin flag

An organization owner or admin administers every workspace in the organization without holding a per-workspace admin flag. That fallback does not satisfy a check that requires workspace ownership, so deleting a workspace stays with the workspace's owner or the organization's owner.

Workspace content

Capability Owner Admin Member Viewer
brain.read ✓ ✓ ✓ ✓
brain.write ✓ ✓ ✓
repository.read ✓ ✓ ✓ ✓
repository.connect ✓ ✓
repository.analyse ✓ ✓ ✓
airun.create ✓ ✓ ✓

Connecting a repository is an admin act because it is the moment an organization's source becomes reachable. Re-analysing one that is already connected is not, so a member can refresh the index.

Architecture and decisions

Capability Owner Admin Member Viewer
constitution.read ✓ ✓ ✓ ✓
constitution.derive ✓ ✓ ✓
constitution.amend ✓ ✓
decision.read ✓ ✓ ✓ ✓
decision.propose ✓ ✓ ✓
decision.write ✓ ✓

Deriving a draft set of architecture rules from the code is open to members; approving one so that agents are held to it is not. The same split applies to decisions: a member — or an agent through the MCP — can propose one, and an admin records it.

Skills

Capability Owner Admin Member Viewer
skill.read ✓ ✓ ✓ ✓
skill.propose ✓ ✓ ✓
skill.publish ✓ ✓

Proposing is open; publishing is not. Publishing a skill is what puts its text into other people's agent briefs.

Missions

Capability Owner Admin Member Viewer
mission.read ✓ ✓ ✓ ✓
mission.write ✓ ✓ ✓
mission.attest ✓ ✓ ✓
mission.approve ✓ ✓
mission.ship ✓ ✓

A member drafts a mission contract and attests a clause from their own knowledge. Approving the contract — which is what lets an agent register against the mission at all — needs an admin.

Supervision

Capability Owner Admin Member Viewer
attention.read ✓ ✓ ✓ ✓
attention.resolve ✓ ✓ ✓
session.read ✓ ✓ ✓ ✓
session.register ✓ ✓ ✓
session.control ✓ ✓ ✓
capsule.read ✓ ✓ ✓ ✓
capsule.review ✓ ✓ ✓
capsule.security_review ✓ ✓

A member can review a change. A security review is separately gated to owners and admins, because a policy can require one specifically and a member signing it off would defeat the requirement.

Workspace roles

Workspace membership stores three flags — read_permission, write_permission and admin_permission — plus an is_owner marker. The role name you see is derived from the flags every time it is displayed; it is never stored as a word.

Workspace role is_owner admin write read
Owner ✓ ✓ ✓ ✓
Admin ✓ ✓ ✓
Member ✓ ✓
Viewer ✓

The roles you can assign on a workspace are admin, member and viewer. Ownership is not in that list.

Platform capabilities

These belong to Madebook staff and to nobody else. No organization role grants them; they come only from the is_platform_admin flag on a user account.

Capability What it reaches
platform.manage_users The user list across the whole deployment
platform.manage_billing Plans and revenue across the deployment
platform.manage_ai_providers The platform's own provider configuration
platform.manage_email Email delivery settings and the log
platform.manage_integrations The Madebook GitHub App registration
platform.view_jobs The background job queue
platform.view_audit_log The audit log across organizations
skill.publish_platform Publishing a skill above every organization

There is deliberately no platform.manage_organizations. An organization belongs to Bookbag and is administered there, for every product at once. Madebook holds no power over one, so it does not advertise a capability to manage one.

See The platform admin area for what each of those pages does.

When a capability name is wrong

If a controller asks for a capability that is not in the table, the request fails immediately with UNKNOWN_CAPABILITY and a message naming the capability. It does not quietly return "not allowed". That is so a typo in the server surfaces as a spelling mistake rather than sending someone hunting for a permissions bug that does not exist.