← All roles
Repository role·One repository owned by a personal account
Collaborator on a personal repository
Tier 1 · HighData
Why Tier 1
Tier 1 because it includes Packages: Write (repository), Workflows: Write (repository).
Someone the owner of a personal repository has invited. There is only one level: collaborators can pull and push, manage issues and pull requests, and publish packages.
Available on: Free, Team, Enterprise Cloud, Server. Source
Permissions it includes (5)
| Tier | Permission | From |
|---|---|---|
| T1sets tier | Packages: Writerepository |
|
| T1sets tier | Workflows: Writerepository |
|
| T2 | Contents: Writerepository |
|
| T2 | Issues: Writerepository |
|
| T2 | Pull requests: Writerepository |
|
Attack paths
Techniques it enables
- 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
- Delete branches and workflow runs 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
- Trigger the publish workflow from a tampered branch Poison the build or published package · through Contents: Write
- Get an agent to copy private code into public Read or expose private code · through Issues: Write
- 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
Escalations it starts
- 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
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-pushNx "s1ngularity"tj-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 breadth