Scopes

Scopes control what actions an account can perform on which resources. Understanding the scope system is key to setting up the right access for developers, machines, and automated pipelines.

Scope Fields

Each scope has four fields:

FieldDescriptionValid values
effectWhether to allow or deny the matched request

allow, deny

actionThe operation being performed

read, write, delete,

*
resourceThe type of resource being accessed

artifacts, repos, groups, members, tokens, org,

*
filter

A glob pattern matched against the specific resource name (e.g. repository slug). Use * to match all.

nix-cache, nix-*, *

Examples:

How Scopes Are Assigned

Scopes are assigned to groups, not directly to individual accounts. An account inherits scopes from every group it belongs to. The effective set of permissions is the union of all scopes across all group memberships.

Account A  ──belongs to──▶  group:nix-readers      (allow read  artifacts nix-cache)
           ──belongs to──▶  group:release-managers  (allow read  artifacts *
                                                      allow write artifacts releases)

Effective scopes for Account A:
  allow read  artifacts nix-cache
  allow read  artifacts *
  allow write artifacts releases

Deny rules are evaluated before allow rules — if any matching scope has effect: deny, the request is rejected regardless of other allows.

Special Groups

@everyone

Every member of an organization is automatically a member of @everyone. Scopes assigned to @everyone apply to all org members. Use this group to set organization-wide defaults, such as read access to shared public repositories.

@owners

Organization owners are automatically added to @owners, which grants full administrative access to the organization, including managing members, groups, repositories, and settings. The @owners scope set is immutable and cannot be edited.

Worked Examples

1. Read-Only Configuration

For consumers that only pull artifacts and never push:

2. Read-Write Configuration

For developers or CI pipelines that both pull and push:

3. Semi-Admin Configuration

For release engineers who need broad read access but write access only to production repositories: