← All roles
Repository role·One repository
Write
Tier 1 · HighData
Why Tier 1
Tier 1 because it includes Actions: Write (repository), Packages: Write (repository), Secrets: Write (repository) and 1 more.
Push code, run workflows and manage releases.
Available on: Every setup. Source
Permissions it includes (21)
| Tier | Permission | From |
|---|---|---|
| T1sets tier | Actions: Writerepository |
|
| T1sets tier | Packages: Writerepository |
|
| T1sets tier | Secrets: Writerepository |
|
| T1sets tier | Workflows: Writerepository |
|
| T2 | Variables: Writerepository |
|
| T2 | Checks: Writerepository |
|
| T2 | Codespaces: Writerepository |
|
| T2 | Contents: Writerepository |
|
| T2 | Discussions: Writerepository |
|
| T2 | Issues: Writerepository |
|
| T2 | Pull requests: Writerepository |
|
| T2 | Secret scanning alerts: Writerepository |
|
| T2 | Code scanning alerts: Writerepository |
|
| T2 | Commit statuses: Writerepository |
|
| T2 | Dependabot alerts: Writerepository |
|
| T3 | Actions: Readrepository |
|
| T3 | Administration: Readrepository |
|
| T3 | Contents: Readrepository |
|
| T3 | Packages: Readrepository |
|
| T3 | Code scanning alerts: Readrepository |
|
| T3 | Dependabot alerts: Readrepository |
|
Attack paths
Techniques it enables
- Delete branches and workflow runs Delete code or cover tracks · through Actions: Write, Contents: Write
- Trigger the publish workflow from a tampered branch Poison the build or published package · through Actions: Write, Contents: Write
- Publish a malicious version with a stolen token Poison the build or published package · through Packages: Write
- Have a workflow approve the PR Submit malicious code · through Workflows: Write, Pull requests: Write
- Add a workflow that dumps secrets Steal CI secrets and tokens · through Workflows: Write
- Leave a dormant workflow behind Keep access · through Workflows: Write
- Push directly, without review Submit malicious code · through Contents: Write
- Push more commits after approval Submit malicious code · through Contents: Write, Pull requests: Write
- Approve someone else's PR, then push to it Submit malicious code · through Contents: Write, Pull requests: Write
- Hide it in a change nobody can review Submit malicious code · through Contents: Write
- Use a trusted colleague's account Submit malicious code · through Contents: Write, Pull requests: Write
- Force push or delete a protected branch Delete code or cover tracks · through Contents: Write
- Push a release tag to an unreviewed commit Point a release tag at a bad commit · through Contents: Write
- Repoint existing tags on a published Action Point a release tag at a bad commit · through Contents: Write
- Run PR code in a privileged workflow Steal CI secrets and tokens · through Contents: Write
- Read secrets from the runner Steal CI secrets and tokens · through Contents: Write
- Get an agent to copy private code into public Read or expose private code · through Issues: Write, Contents: Read
- Approve your own PR from a second account Submit malicious code · through Pull requests: Write
- Trick or outlast the reviewer Submit malicious code · through Pull requests: Write
- Clone private repos with a stolen token Read or expose private code · through Contents: Read
Escalations it starts
- Start a privileged publish job by hand: Whatever the publish job holds: package registry tokens and the right to publish. · through Actions: Write
- Change a workflow, get its secrets: Every secret the repository's workflows can read, and cloud access through OIDC. · through Workflows: Write
- Move release tags on a widely used Action: Code execution, with their secrets, in every repository that pins the Action by tag. · through Contents: Write
- Change a shared reusable workflow: Code running in every calling repository's workflow, with the secrets and GITHUB_TOKEN those runs get: an internal version of a compromised Action. · through Contents: Write
Abused in
Nx "s1ngularity"ChainDrop: a hijacked maintainer account publishes through trusted publishingMegalodon: mass backdooring of CI workflowsGhostActionShai-Hulud self-propagating worm (1.0 & 2.0)Salesloft Drift GitHub → AWS pivotDependabot impersonationTeamPCP tag force-overwrite campaignprt-scan: automated pull_request_target attacksCVE-2026-3854: push-option metadata RCEhackerbot-claw autonomous agent RCEGlassWorm: editor extensions that steal GitHub tokens and force-pushtj-actions/changed-files supply-chain compromiseOAuth consent phishing at scaleUltralytics build cache poisoningArtiPACKED artifact token leakageSelf-hosted runner takeovers (PyTorch and others)GitHub App installation token abuse"Pwn requests": pull_request_target & workflow_runGitHub MCP / agentic token breadthGitHub's internal repositories taken through a VS Code extensionMercedes-Benz source code exposureHeroku / Travis CI OAuth token theft
Abilities with no matching permission
These do not affect the tier.
- Edit and delete their own comments (Only the person's own comments.)
- Have an issue assigned to them (Being assigned grants nothing.)
- Edit wikis in public repositories (Wikis have no API permission. Wiki edits do not change code or settings.)
- Edit wikis in private repositories (Wikis have no API permission. Wiki edits do not change code or settings.)
- Report abusive or spammy content (Moderation report only.)
- Act as a designated code owner for a repository (A code owner's approval can satisfy a review rule. It is a special grant made in the CODEOWNERS file, not a permission.)