Skip to main content
Every permission is a {kind}.{verb} string. Wildcard forms (*, {kind}.*, *.read) are also valid; see Wildcards. For the model itself: how grants, roles, groups, and tenant-bindings combine and the order they are evaluated in; see Authorization. Columns: $permission · what it enables with no resource prefix · the resource prefix (name_pattern) a grant can scope it to · which builtin confers it by default.
Org admins (GitHub org owners) hold every permission via the murmur-org-admin-root binding (*). The Default grant column therefore describes the non-admin builtin. Cell shorthand:
  • Member: every authenticated member, tenant-wide (murmur-member-baseline).
  • Member (own): every member, scoped to their own namespace by the named self-binding.
  • Admin only: no builtin; needs an admin grant (*) or an explicit admin-created binding.
The resource prefix column shows the kind’s catalog-name shape, with {…} marking the name segments. A grant’s name_pattern is matched against that name: a trailing * is a prefix match, otherwise exact. none means there is no resource name to scope.For recipe, image, environment, agent-persona, canned-response, knowledge, tool-link-policy, and secret, {name} is either a bare tenant-level name or {workspace}/{slug}. Scoped access also requires workspace.use. Workspace user and Workspace manager mean matching grants with the built-in murmur-workspace-user and murmur-workspace-manager roles, respectively. Their permissions apply only to the workspace and its contents, not tenant-level resources. See workspace grants and defaults.