Skip to content

Domain 4: Manage Access and Permissions Based on Membership (18%) โ€‹

โ† Domain 3 ยท Next Domain โ†’

Exam Tip

This domain is about who can do what, and at what level. The hierarchy is: Enterprise โ†’ Organization โ†’ Team โ†’ Repository. Permissions flow down. Enterprise policies can override org settings. Teams can grant repo access. Individual roles always reflect the most permissive role that applies.


GitHub Organizations โ€‹

A GitHub organization is the primary unit for managing teams, repositories, and policies within GitHub Enterprise.

Single Org vs Multiple Orgs โ€‹

Single OrganizationMultiple Organizations
ManagementSimpler โ€” one place for all settingsComplex โ€” policies must be applied to each org
BillingSingle billing viewConsolidated under enterprise account
Access controlShared across all reposIsolated โ€” teams can't accidentally access other orgs
Scripts/automationEasy โ€” one API targetHarder โ€” scripts must iterate across orgs
Best forSmaller companies, unified teamsLarge enterprises with distinct business units or compliance boundaries

Exam Tip

The exam often asks about tradeoffs. Single org: simpler administration. Multiple orgs: stronger isolation and segregation of sensitive codebases. Choose multiple orgs when different teams require independent governance.

Default Repository Permissions โ€‹

Org owners can set the base permission for all members across all repositories:

SettingWhat Members Can Do
No permissionMembers have no access by default โ€” must be added explicitly
ReadMembers can view and clone all private repos
WriteMembers can push to all private repos
AdminMembers have admin access to all repos

Critical

Setting default permission to Write or Admin across an org is rarely appropriate โ€” it violates the principle of least privilege. The exam will test your awareness of this risk.


Organization Roles โ€‹

RoleCapabilities
MemberDefault role. Access based on team membership and default org permissions.
OwnerFull administrative control of the organization. Can change settings, manage billing, and remove members.
Billing ManagerCan view and manage billing info only. No access to repos or code.
Outside CollaboratorNot an org member. Has access to specific repositories only. Does not consume a seat license.

Member vs Outside Collaborator โ€‹

Org MemberOutside Collaborator
Org membershipYesNo
Team accessCan be added to teamsCannot be on teams
Seat licenseConsumes a seatDoes not consume a seat
Default org permissionsYes (applies)No (only explicit repo access)
Best forInternal employeesContractors, external partners

Enterprise Policies and Organization Permissions โ€‹

Enterprise admins can enforce enterprise policies that apply to all organizations, overriding org-level settings.

Common Enterprise Policies โ€‹

  • Repository creation policy: Restrict who can create repos (owners only, all members, disabled)
  • Forking policy: Allow or prohibit forking of private/internal repos
  • Base permissions: Set a minimum base permission floor across all orgs
  • GitHub Actions policy: Allow or restrict which actions/workflows can run
  • Pages policy: Allow or restrict GitHub Pages publishing

Trap

Enterprise policies override org policies. If you set a policy at the enterprise level, org owners cannot change it. When a question asks how to enforce a rule across all orgs, use an enterprise policy โ€” not per-org configuration.


Teams โ€‹

Teams are groups within an organization that grant access to repositories and maintain membership.

Team Roles โ€‹

RoleCapabilities
MemberAccess to repos the team is assigned to
MaintainerCan manage team membership, settings, and repo access

Team Permissions (Repository Access) โ€‹

When a team is added to a repository, it gets one of these roles:

PermissionWhat Team Members Can Do
ReadClone, view, open issues/PRs
TriageRead + manage issues and PRs (no push)
WriteRead + push to the repo
MaintainWrite + manage settings (except sensitive admin settings)
AdminFull control including destructive actions (delete repo, change branch protections)

Team Sync via Active Directory โ€‹

  • When AD/SAML team sync is enabled, IdP groups are linked to GitHub teams
  • Membership changes in the IdP group automatically propagate to the GitHub team
  • Reduces manual team management overhead

Repository Permission Levels โ€‹

A user's effective access to a repository comes from combining their highest-applicable permission source:

  1. Repository role (directly added as collaborator)
  2. Team membership (team is assigned to the repo)
  3. Organization membership + default permissions

The most permissive permission that applies wins.

How to Audit Repository Access โ€‹

  • Navigate to the repo โ†’ Settings โ†’ Collaborators and teams
  • Enterprise audit log: GET /orgs/{org}/audit-log?action=repo.access
  • GraphQL: query collaborators on a Repository object

Exam Tip

When a question asks how to give a user "the minimum required permissions," the answer involves checking their team memberships and only granting what's needed for the task โ€” never defaulting to Admin or Write if Read or Triage suffices.

Custom Organization Roles and Custom Repository Roles โ€‹

On GitHub Enterprise Cloud, admins can go beyond the built-in roles:

  • Custom organization roles let you delegate selected administrative capabilities without making someone a full owner
  • Custom repository roles let you create a more granular role by extending a base repository role with additional capabilities

This is useful when the built-in roles are either too weak or too broad.

Exam Tip

If the scenario is "delegate one narrow admin capability without full ownership," think custom organization role. If it is "grant repo access that sits between built-in repo roles," think custom repository role.


Repository Permission Capability Matrix โ€‹

Each repository role grants a specific set of capabilities. This matrix shows exactly what each role can and cannot do:

Code & Content โ€‹

CapabilityReadTriageWriteMaintainAdmin
View code, clone, forkโœ…โœ…โœ…โœ…โœ…
View issues, PRs, discussionsโœ…โœ…โœ…โœ…โœ…
View releases and packagesโœ…โœ…โœ…โœ…โœ…
View project boardsโœ…โœ…โœ…โœ…โœ…
View wikiโœ…โœ…โœ…โœ…โœ…
Push to non-protected branchesโŒโŒโœ…โœ…โœ…
Edit wikiโŒโŒโœ…โœ…โœ…
Create and manage releasesโŒโŒโœ…โœ…โœ…
Push to protected branchesโŒโŒโŒโŒโœ…

Issues & Pull Requests โ€‹

CapabilityReadTriageWriteMaintainAdmin
Open issues and PRsโœ…โœ…โœ…โœ…โœ…
Comment on issues and PRsโœ…โœ…โœ…โœ…โœ…
Apply/remove labelsโŒโœ…โœ…โœ…โœ…
Assign/unassign usersโŒโœ…โœ…โœ…โœ…
Close/reopen issues and PRsโŒโœ…โœ…โœ…โœ…
Mark as duplicateโŒโœ…โœ…โœ…โœ…
Request PR reviewsโŒโœ…โœ…โœ…โœ…
Merge pull requestsโŒโŒโœ…โœ…โœ…
Apply milestonesโŒโœ…โœ…โœ…โœ…

Repository Settings & Administration โ€‹

CapabilityReadTriageWriteMaintainAdmin
Manage topicsโŒโŒโŒโœ…โœ…
Edit repo description/websiteโŒโŒโŒโœ…โœ…
Manage webhooksโŒโŒโŒโŒโœ…
Manage deploy keysโŒโŒโŒโŒโœ…
Manage branch protection rulesโŒโŒโŒโŒโœ…
Manage rulesetsโŒโŒโŒโŒโœ…
Change repo visibilityโŒโŒโŒโŒโœ…
Delete the repositoryโŒโŒโŒโŒโœ…
Archive the repositoryโŒโŒโŒโŒโœ…
Add/remove collaboratorsโŒโŒโŒโŒโœ…
Manage GitHub Pages settingsโŒโŒโŒโŒโœ…
Enable/disable features (wiki, issues, discussions)โŒโŒโŒโŒโœ…

Security โ€‹

CapabilityReadTriageWriteMaintainAdmin
View Dependabot alertsโŒโŒโŒโŒโœ…
Dismiss Dependabot alertsโŒโŒโŒโŒโœ…
View secret scanning alertsโŒโŒโŒโŒโœ…
Resolve secret scanning alertsโŒโŒโŒโŒโœ…
View code scanning alertsโŒโŒโœ…โœ…โœ…
Dismiss code scanning alertsโŒโŒโœ…โœ…โœ…
Security policy (SECURITY.md)โŒโŒโœ…โœ…โœ…
Create security advisoriesโŒโŒโŒโŒโœ…

Exam Tip

The Security Manager org role (separate from repo roles) grants read access to security alerts across all repos in the org without needing Admin on each repo. This is the exam-preferred answer for "how to give the security team visibility without over-provisioning."

GitHub Actions โ€‹

CapabilityReadTriageWriteMaintainAdmin
View workflow runs and logsโœ…โœ…โœ…โœ…โœ…
Re-run workflowsโŒโŒโœ…โœ…โœ…
Cancel workflowsโŒโŒโœ…โœ…โœ…
Approve workflow runs (first-time contributors)โŒโŒโœ…โœ…โœ…
Manage repo-level secretsโŒโŒโŒโŒโœ…
Manage repo-level variablesโŒโŒโŒโŒโœ…
Manage self-hosted runners (repo-level)โŒโŒโŒโŒโœ…
Configure required workflowsโŒโŒโŒโŒโœ…

Enterprise & Organization Role Summary โ€‹

Enterprise Roles โ€‹

RoleCapabilities
Enterprise OwnerManage all orgs, enterprise policies, billing, SAML/SCIM, audit log, runners, IP allow lists
Enterprise Billing ManagerView and manage enterprise billing only โ€” no access to orgs, code, or policies
Enterprise MemberDefault role โ€” access governed by org membership within the enterprise

Organization Roles (Extended) โ€‹

RoleCapabilities
OwnerFull admin โ€” manage members, teams, billing, security settings, integrations, and policies
MemberAccess based on default permissions + team membership
Billing ManagerView and manage org billing โ€” no code or settings access
Security ManagerView security alerts and settings across all repos โ€” no code write access
Outside CollaboratorAccess to specific repos only โ€” no org membership, no team access, no seat consumed

Trap

The Security Manager role is an organization role, not a repository role. It is assigned to a team, not individual users. The exam tests this distinction.


Least Privilege in Practice โ€‹

The principle of least privilege means giving users only the permissions they need โ€” no more.

Common patterns the exam tests:

ScenarioCorrect Permission
External reviewer who only reads and comments on PRsTriage (or Read)
Developer who writes code but doesn't manage repo settingsWrite
Tech lead who manages PR rules but not billingMaintain
Security team that needs to audit all reposRead (org-level)
Release manager who needs to push to protected branchesAdmin (with branch protection bypass)

Benefits and Drawbacks of Creating a New Organization โ€‹

BenefitsDrawbacks
Isolates sensitive codebasesMore orgs = more administration overhead
Separate billing visibilityScripts and automation must target multiple orgs
Independent governance policiesHarder to share resources (runners, packages)
Clear boundary for external collaboratorsUsers can get confused about which org to work in

Domain 4 Quick Quiz

1 / 6
โ“

What is the difference between an org member and an outside collaborator?

(Click to reveal)
๐Ÿ’ก
An org member belongs to the org, can be on teams, and consumes a seat license. An outside collaborator has only specific repo access, cannot join teams, and does not consume a seat.

Key Numbers for Access & Permissions โ€‹

ParameterValueNotes
HTTP 403Permission deniedReturned when a user lacks write permissions or is blocked by a branch protection rule. Distinct from 404 (repo not visible)
Dormant user threshold30 days (default)A user with no activity for 30 days is flagged as "dormant" โ€” useful for license seat reclamation. On GHES, admins can configure this to 30, 60, 90, or 120 days

Exam Tip

A 403 error on a push usually means the user lacks write access or a branch protection rule is blocking them. A 404 error means the repo doesn't exist or the user doesn't have read access (GitHub returns 404 instead of 403 for private repos to avoid leaking repo existence).

Trap

Dormant users still consume a license seat until they are explicitly removed or suspended. Identifying and removing dormant users is a key admin task for controlling enterprise costs.


Active vs Dormant Users โ€” Seat Reclamation โ€‹

Understanding what counts as "active" is critical for license management and a common exam topic.

What Counts as Active โ€‹

If a user performs any of the following within the dormancy threshold (default 30 days), they are not dormant:

CategoryActions
AuthenticationLogging into GitHub via Web UI, API (using PAT), or SSH key
Git OperationsPerforming a git push or git pull against any repository
Content CreationOpening, commenting on, or closing a PR or Issue; pushing a commit; editing a Wiki page
Releases & PackagesCreating a release; publishing or downloading a package from GitHub Packages
GitHub ActionsTriggering a workflow run or manually starting a job
CollaborationAccepting an org/repo invitation; starring a repo; reacting to a comment

What Does NOT Count as Activity โ€‹

These actions alone will not prevent a user from being marked dormant:

  • Passive viewing โ€” browsing a repo or reading code without logging in
  • Being @mentioned โ€” the user remains dormant until they reply
  • Automatic sync โ€” external systems syncing data (unless the user initiated via their own PAT)
  • Membership alone โ€” simply existing in a team or organization

Dormancy Immunity โ€‹

An account is never marked dormant if:

  1. The account is newer than the threshold age (e.g., a 2-day-old account is safe with 0 activity)
  2. The user is a Site Administrator (on GHES)
  3. The account is a Bot or Service Account that has performed a programmatic action recently

Administrative Action: Reclamation Steps โ€‹

StepActionDetails
1. IdentifyFilter by "Dormant" statusEnterprise โ†’ People dashboard
2. AuditCheck "Last Active" dateVerify the user is genuinely inactive
3. ActionSuspend (GHES) or Remove (GHEC)Reclaims the license seat

Exam Tip

Suspending a user on GHES stops them from consuming a license but preserves their data (repos, issues, PRs). Removing a user from GHEC frees the seat but their contributions remain as "ghost" user references.

Trap

A user who only browses repos or receives @mentions without replying is still considered dormant โ€” passive access does not count as activity. The exam may try to trick you with scenarios like "the user views the repo daily" โ€” that's still dormant.


โ† Domain 3 ยท Next Domain โ†’

Happy Studying! ๐Ÿš€ โ€ข Privacy-friendly analytics โ€” no cookies, no personal data
Privacy Policy โ€ข AI Disclaimer โ€ข Report an issue