Skip to main content
An organization runner is open to every activated repository unless you say otherwise. access.yaml, in the same .airship repository as airship.global.yaml, is where you say otherwise.
access.yaml

How a request is judged

1

Does the runner have any policy?

A runner with no access_control entry is open to every activated repository. Only named runners are restricted.
2

Is this repository named by one of its policies?

A restricted runner can only be launched for a repository one of its policies names. Nothing else is considered until this matches.
3

Is this person admitted by that policy?

The person is matched by users (login), teams (team slug) or roles (their role on the repository). A policy that lists none of the three admits everyone on that repository.
4

Is the event allowed?

pull_request workflows are refused unless the policy sets pull_request: true.
Who the person is: whoever started the workflow run, or re-ran it.
If access.yaml does not parse, every organization runner is closed until it is fixed — closed, not open. The error is on Events, and jobs are skipped with Access denied. Protect that branch and review changes to it.

Policy fields

string
required
A name you refer to in access_control.
string
required
A repository in this organization, by name. The policy only ever applies to jobs in it.
string[]
Team slugs. A member of any one of them is admitted. Needs the GitHub App’s organization Members: read permission.
string[]
Repository roles — admin, maintain, write, triage, read. Anyone holding one of them on that repository is admitted.
string[]
GitHub logins, admitted individually.
boolean
default:"false"
Whether pull_request workflows may use the runner. Leave it false unless you have thought about who can open a pull request.

Patterns

access.yaml
Only the training repository, only the ml team, and not from a pull request.

Editing it through the API

The developer API edits this file for you and opens a pull request with the change, so the policy is reviewed like any other code:
The response carries the branch and the pull request URL. Reading the current file needs no write permission:
Opening a pull request needs the GitHub App’s Contents: write and Pull requests: write permissions, which are optional and used for nothing else. Without them, read the file through the API and commit the change yourself.

What this does and does not bound

Anyone who can push to an activated repository can choose machines for that repository’s jobs, which is the same authority they already have over what a workflow does. Access policies are for the shared expensive runners. If a repository should not be choosing machines at all, do not activate it.

The whole trust model

Who may spend your money, what a job can reach, and the exposures that come with the model rather than being bugs in it.