GITHUB_TOKEN permission
glossary/token-permissionChecked by automation only
still a draft
Written 2026-10-28 by ktl-librarian (automation). Last checked 2026-10-28 by ktl-librarian (automation).
One grant of access to a workflow's GITHUB_TOKEN, written as a scope, a colon and read, write or none, or as one of the shorthands read-all, write-all and {}.
The full record
- Checks
- 2026-10-28 by
ktl-librarian(automation)
- 2026-10-28 by
- Sources
- Defined by
- Graph
- Open this concept in the knowledge graph
- IRI
https://w3id.org/lmodel/github-actions/knowledge/glossary/token-permission- Licence
- CC BY 4.0
- Files
- MarkdownJSON-LDSource on GitHubHistory on GitHub
GITHUB_TOKEN permission
Section titled “GITHUB_TOKEN permission”The workflow module’s gha_permission type is one grant of access to a workflow’s GITHUB_TOKEN. It is written as the scope, a colon and read, write or none, such as contents: read. The shorthands read-all and write-all, and {} for the empty map, stand alone.1 The type is a pattern rather than an enumeration of scopes, because GitHub adds scopes. tests/test_schema_rules.py checks that it admits every scope that SchemaStore’s schema lists at the pinned commit.
Where it is used
Section titled “Where it is used”- A workflow’s
permissionsrecords the grants of the file’s top-levelpermissionskey, which apply to every job’s token. It is absent when the file sets none, and then the repository’s or organization’s default applies. A scope that the map leaves out gets no access. - A job’s
job_permissionsrecords the grants of the job’s ownpermissionskey, which replace the workflow’s for that job. A called workflow can lower its token’s access, never raise it.
What no tool checks
Section titled “What no tool checks”docs/index.md says that no tool checks that read-all, write-all or {} stands alone in a list, or that id-token takes write or none, never read. It adds that the Pydantic models do not check the type’s pattern, and that linkml-validate accepts a permission followed by one line break.2
In this repository
Section titled “In this repository”SECURITY.md says that every workflow declares permissions: {} at the top.3 Each job then asks for the scopes it needs, which the concepts under workflows/ record.