Forgecroft Docs
Guides / Auth

Roles & Permissions

Understand the role hierarchy, fine-grained verbs, and composable access grants that control who can do what.

Forgecroft uses a layered permission model: org roles provide a baseline, and fine-grained access grants add composable permissions on top.

Org Roles

Every org member has one of four roles:

RoleCapabilities
ownerFull control. Cannot be demoted by others. Can manage billing, delete the org.
adminManage members (except owners), create API keys, update org settings, manage all resources.
memberDefault role. Can work within projects and workspaces they have access to.
readerRead-only access to org resources.

Role Hierarchy

owner (2)
  └── admin (1)
        └── member (0)
              └── reader (-1)

Only owners can promote users to admin. Only owners can change the owner’s role. You cannot change your own role.

Fine-Grained Verbs

Beyond org roles, Forgecroft uses verbs for granular permissions on specific resources:

VerbWhat it allows
readView the resource
writeModify the resource
deleteRemove the resource
manage_membersAdd/remove members
manage_grantsCreate/revoke access grants
triggerStart a run
applyExecute an apply run
approveApprove a pending run
rejectReject a pending run
abortCancel an in-progress run
force_unlockRelease a stale state lock
useUse the resource (e.g., credentials)

Access Grants

Access grants are composable permissions that can be given to users or teams on specific resources:

{
  "subject_type": "user",
  "subject_id": "user-uuid",
  "verb": "write",
  "resource_type": "workspace",
  "resource_id": "workspace-uuid"
}

Subject Types

Resource Types

Access grants can target: org, project, workspace, run, credential, vcs, state_backend, tool_config, policy_set, team, approval_rule, notification.

Escalation Prevention

A user can only grant a verb they already hold. You cannot give permissions you don’t have yourself.

Workspace Access Hierarchy

When determining a user’s effective access to a workspace, Forgecroft checks in order:

  1. Org owner/admin → always admin access
  2. Project admin (via access grant with write on the parent project) → admin
  3. Direct workspace admin (via access grant with write on the workspace) → admin
  4. Project member or workspace member (via read grant) → member
  5. Org readermember baseline for reads
  6. No matching grantforbidden

Workspace Member Verbs

When added as a workspace member, users receive a set of verbs:

RoleVerbs
adminread, write, delete, manage_members, manage_grants, trigger, apply, approve, reject, abort, force_unlock
memberread, trigger, approve

Approvers get only the approve verb — they can approve runs but cannot modify the workspace.

Audit Trail

All access grant operations are recorded in the access event audit trail. Query with GET /access-events filtered by subject, resource, or time range. Only org admins can view audit events.