Skip to main content

Last updated: May 2026

Practice Exam

GH-100GitHub Certified: GitHub Administration

Test your knowledge with official exam-style questions

Questions25Passing700Exam time120 min

Questions and options are shuffled each attempt

GitHub AdministrationPractice Set 1: All Questions & Explanations

Full question text, answer options, and explanations for this practice set — a spoiler-free alternative is the interactive quiz above for scored, shuffled practice.

  1. 1. A company is setting up GitHub Enterprise Cloud with Enterprise Managed Users (EMU). How does an EMU account differ from a personal GitHub account?

    • A. EMU accounts can interact with public repositories and the broader GitHub community exactly like personal accounts
    • B. EMU accounts are provisioned and owned by the enterprise; they cannot contribute to repositories outside the enterprise and cannot create personal forks outside the enterprise(correct)
    • C. EMU accounts require each user to verify their email independently before they can join the enterprise
    • D. EMU accounts have no restriction on organization membership within GitHub

    Explanation: Enterprise Managed Users are fully controlled by the enterprise identity provider — accounts are created, updated, and deprovisioned by the enterprise via SCIM, not by individual users. EMU accounts are scoped to the enterprise: they cannot follow users, star repositories, or contribute to repositories outside the enterprise's organizations. This is the key difference from personal GitHub accounts, which are fully independent. Personal accounts require email verification, not EMU accounts managed by the IdP.

  2. 2. An organization wants to enforce SAML SSO so that members must authenticate through the company's identity provider before accessing organization resources. After enabling SAML SSO, what happens to members who have not yet authorized their personal access tokens (PATs) through SAML?

    • A. Their PATs continue to work normally — SAML SSO only applies to browser sessions
    • B. Their PATs stop working for organization resources until they authorize each PAT via SAML SSO in their account settings(correct)
    • C. All existing PATs are automatically revoked and new ones must be created
    • D. PATs are replaced by OAuth tokens automatically when SAML SSO is enabled

    Explanation: When SAML SSO is enforced, API access to organization resources via PATs also requires SAML authorization. Users must explicitly authorize each PAT for the SSO-protected organization in their GitHub account settings. PATs that have not been SSO-authorized will receive a 403 error when used against that organization's resources. Existing PATs are not automatically revoked — only unauthorized ones stop working. There is no automatic conversion to OAuth tokens.

  3. 3. An enterprise uses Okta as its identity provider and wants GitHub teams to be automatically kept in sync with Okta groups. Which GitHub feature enables this automatic team membership synchronization?

    • A. Branch protection rules with required reviewers from Okta groups
    • B. SCIM provisioning combined with team synchronization, so GitHub teams mirror IdP group membership(correct)
    • C. GitHub Actions workflow that queries Okta's API every night and updates team memberships
    • D. SAML SSO alone automatically synchronizes team membership from the IdP

    Explanation: Team synchronization (available with SAML SSO + supported IdPs like Azure AD/Entra ID or Okta) allows GitHub to automatically add or remove team members based on the user's group membership in the identity provider, managed via SCIM. This eliminates the need for manual team management. Branch protection rules control merge requirements, not identity. A custom Actions workflow is a workaround but not the native solution. SAML SSO authenticates users but does not by itself sync team membership — SCIM and team sync are required.

  4. 4. A GitHub organization has five repositories. An administrator wants a specific external collaborator to have triage access to two repositories but no access to the other three. What is the correct approach?

    • A. Add the collaborator to the organization with the Triage role, which scopes access to selected repositories
    • B. Add the collaborator directly to the two repositories with the Triage permission at the repository level(correct)
    • C. Create an organization team, set the team permission to Triage, and add the collaborator to the team
    • D. Grant the collaborator the organization Owner role and configure repository-level restrictions

    Explanation: External collaborators are not organization members and must be added to repositories individually. Adding them directly to a repository with the Triage permission gives scoped access to only that repository. Organization membership roles (A) apply to members, not external collaborators. Teams require the user to be an organization member first — external collaborators cannot be added to teams. Granting the Owner role (D) would give full organization access, which is excessive.

  5. 5. An enterprise administrator needs to audit which organization members have admin access to a sensitive repository and verify that no unauthorized users have been granted access in the last 30 days. What is the most effective approach?

    • A. Review the repository's Settings > Collaborators and teams page to see current access, and cross-reference the enterprise audit log filtered for 'member.added' and 'repository' events in the last 30 days(correct)
    • B. Ask each team lead to self-report who has admin access in a shared spreadsheet
    • C. Run a GitHub Actions workflow that queries the REST API and emails the collaborator list daily
    • D. Enable branch protection on the main branch — only admins can bypass it, so the list is implied

    Explanation: The definitive way to audit access is to combine the current collaborator list (Settings > Collaborators and teams) with the enterprise/organization audit log, which records all permission-change events including member additions with timestamps, actors, and affected resources. Filtering for the last 30 days gives a clear picture of recent changes. Self-reporting (B) is unreliable. A daily workflow (C) shows current state but not historical changes. Branch protection (D) does not enumerate who has admin access.

  6. 6. A GitHub Enterprise administrator receives a support ticket about an issue that requires GitHub Support involvement. Before contacting GitHub Support, what artifact should the administrator generate to help diagnose server-side issues?

    • A. A CSV export of the organization's audit log
    • B. A support bundle from the GitHub Enterprise Server management console or CLI(correct)
    • C. A network packet capture from the runner machines
    • D. A GitHub Actions workflow run log export

    Explanation: Support bundles are the standard diagnostic artifact for GitHub Enterprise Server issues — they contain system logs, configuration metadata, and diagnostic information that GitHub Support uses to investigate problems. They are generated from the management console (site admin panel) or via the `ghe-support-bundle` CLI command. Audit log CSV exports show user activity but not system diagnostics. Network captures are rarely the first step and are not specific to GitHub issues. Workflow run logs address CI/CD issues, not platform-level problems.

  7. 7. A company is evaluating GitHub Enterprise deployment options. They need data residency in the European Union and want all user accounts managed by their identity provider with no personal GitHub.com accounts. Which deployment model best fits these requirements?

    • A. GitHub Enterprise Server (GHES) deployed on-premises
    • B. GitHub Enterprise Cloud with personal accounts and SAML SSO
    • C. GitHub Enterprise Cloud with Data Residency and Enterprise Managed Users (EMU)(correct)
    • D. GitHub Enterprise Cloud with personal accounts and IP allow lists

    Explanation: GitHub Enterprise Cloud with Data Residency allows organizations to store their data in a specific geographic region (including the EU). Combined with Enterprise Managed Users, all accounts are fully controlled by the enterprise IdP — no personal GitHub.com accounts are involved. GHES on-premises (A) provides data residency but requires the company to manage infrastructure. GHEC with personal accounts + SAML (B) does not enforce data residency by default. IP allow lists (D) restrict network access but do not address data residency or account management.

  8. 8. An enterprise administrator notices that the reported consumed licenses are close to the purchased seat count. Which GitHub feature allows them to monitor detailed license consumption and identify unused seats?

    • A. The organization's Insights > Traffic page showing daily unique visitors
    • B. The enterprise account's Billing & plans section, which shows consumed vs. purchased licenses and allows license usage CSV export(correct)
    • C. The Dependabot alerts page, which cross-references license holders
    • D. The GitHub Actions usage report showing minutes consumed per user

    Explanation: Enterprise license consumption is tracked in the enterprise account's Billing section, which shows the number of seats used vs. purchased and can export a license usage report listing all license holders. This allows admins to identify users who have licenses but are inactive. Traffic insights (A) show repository visit metrics. Dependabot alerts (C) relate to security vulnerabilities. Actions usage reports (D) show CI/CD minutes, not license seat allocation.

  9. 9. A security administrator wants to ensure that no one can push secrets (such as AWS access keys or API tokens) to any repository in their GitHub organization. Which GitHub Advanced Security feature should be enabled?

    • A. Dependabot version updates
    • B. Secret scanning with push protection(correct)
    • C. Code scanning with CodeQL
    • D. Repository rulesets requiring PR reviews

    Explanation: Secret scanning with push protection detects known secret patterns (tokens, keys, credentials) in code being pushed and blocks the push before the secret reaches the repository history. Dependabot (A) manages dependency vulnerabilities. CodeQL (C) performs static analysis for code security vulnerabilities but does not detect secrets in the same push-blocking manner. PR review requirements (D) slow down changes for human review but do not automatically detect secrets.

  10. 10. An organization wants to automatically receive pull requests that update vulnerable dependencies to safe versions. Which GitHub feature creates these automated fix PRs?

    • A. GitHub Actions scheduled workflow that runs `npm audit fix` and opens a PR
    • B. Dependabot security updates, which automatically open pull requests to update vulnerable dependencies(correct)
    • C. CodeQL analysis that suggests dependency fixes in pull request comments
    • D. Secret scanning auto-remediation that patches dependency files

    Explanation: Dependabot security updates is the native GitHub feature that automatically opens pull requests to update dependencies with known security vulnerabilities to the minimum safe version. It integrates with the GitHub Advisory Database. A custom Actions workflow (A) can accomplish something similar but requires maintenance and is not the native solution. CodeQL analyzes code logic, not dependency versions. Secret scanning addresses credentials, not dependency vulnerabilities.

  11. 11. An enterprise security team wants all repositories to have branch protection, required code owners review, and no direct pushes to `main`. Rather than configuring each repository individually, how can an administrator enforce these rules organization-wide?

    • A. Send an email to all repository admins asking them to configure branch protection manually
    • B. Use organization or enterprise-level repository rulesets to apply consistent rules across all repositories(correct)
    • C. Create a template repository with branch protection pre-configured that all new repositories copy
    • D. Enable the 'Require pull request before merging' default in the organization's member privileges settings

    Explanation: Repository rulesets (available at organization and enterprise levels) allow administrators to define rules that apply automatically to all repositories — or a filtered subset — without requiring per-repository configuration. Rules can enforce branch protection, required approvals, and push restrictions. Template repositories (C) only apply configuration to new repositories, not existing ones. The member privileges setting (D) can set some defaults but does not provide the granular ruleset capabilities. Manual emails (A) are not scalable and not enforceable.

  12. 12. A compliance officer needs a log of all administrative actions taken on the organization's repositories over the past 6 months — including who changed permissions, who created or deleted repositories, and who changed branch protection rules. Which GitHub feature provides this?

    • A. The repository's commit history showing all commits to the default branch
    • B. The organization's audit log, which records administrative events with actor, timestamp, and resource details(correct)
    • C. GitHub Actions workflow run history for all organization repositories
    • D. The organization's member activity report from the Insights page

    Explanation: The organization audit log (accessible via Settings > Audit log or the API) records administrative actions including repository creation/deletion, permission changes, branch protection changes, and more — each with the actor's identity, timestamp, and affected resource. The commit history (A) shows code changes, not admin actions. Actions run history (C) shows CI/CD executions. Insights (D) shows code contribution metrics, not admin events.

  13. 13. A developer at a regulated company accidentally pushed an AWS secret access key to a public repository. Secret scanning detected it and GitHub notified AWS, who revoked the key. The administrator needs to implement a process so this never happens again. Which combination of controls is most effective?

    • A. Enable secret scanning push protection to block future pushes containing known secret patterns, and train developers to use GitHub Secrets or a secrets manager instead of hardcoding credentials(correct)
    • B. Make all repositories private so secret scanning is no longer needed
    • C. Require all commits to be signed with GPG keys so secrets can be traced to their author
    • D. Add a branch protection rule that requires two reviewers to approve any push that touches configuration files

    Explanation: Push protection (blocking the push before it reaches the repository) combined with developer education to use proper secrets management (GitHub Actions secrets, Azure Key Vault, AWS Secrets Manager, etc.) addresses both the technical control and the root cause. Making repositories private (B) reduces exposure but does not prevent accidental commits. GPG signing (C) provides non-repudiation but does not detect or block secrets. Requiring reviewers on config files (D) adds a human gate but reviewers may not notice obfuscated secrets and the secret is already in the push.

  14. 14. A development team wants to integrate a third-party CI/CD tool with their GitHub organization via a GitHub App. An administrator is reviewing the proposed installation. What is the key difference between a GitHub App and an OAuth App in terms of permissions and access scope?

    • A. GitHub Apps request granular, repository-scoped permissions and act as their own identity; OAuth Apps request broad scopes and act as the authorizing user(correct)
    • B. OAuth Apps are more secure because they require user approval for every API call
    • C. GitHub Apps can only read data; OAuth Apps can write data to repositories
    • D. GitHub Apps and OAuth Apps are functionally identical; the difference is only in how they are registered

    Explanation: GitHub Apps use fine-grained, resource-specific permissions (e.g., read access to specific repositories, write to issues only) and authenticate as the app itself, not as a user — this limits blast radius. OAuth Apps operate with broad user-delegated scopes (e.g., `repo`, `admin:org`) and act on behalf of the authorizing user, meaning they inherit the user's full permissions within those scopes. This makes GitHub Apps the preferred choice for integrations from a security posture perspective. OAuth Apps do not require per-call approval. Both app types can read and write. They differ fundamentally in permission model, not just registration.

  15. 15. An organization's security policy requires that all personal access tokens (PATs) used to access the organization must expire within 90 days and be approved by an administrator. Which GitHub controls can enforce these requirements? Choose 2.

    • A. Set a maximum PAT lifetime policy at the organization level to restrict tokens to 90 days or fewer(correct)
    • B. Enable fine-grained PAT approval requirement so that fine-grained tokens must be approved by an organization admin before they can access organization resources(correct)
    • C. Require all users to enable 2FA — this implicitly limits PAT lifetime to 90 days
    • D. Configure a GitHub Actions workflow that audits PAT creation events weekly and emails violators
    • E. Set the organization's default repository permission to Read so all PATs are automatically read-only

    Explanation: Organizations can set a policy that restricts fine-grained PAT lifetime to a maximum number of days (A) and can require administrator approval before fine-grained PATs are activated for the organization (B). These are native GitHub organization policies. 2FA (C) improves account security but does not limit PAT expiry. A custom audit workflow (D) provides visibility but does not enforce the policy technically. Setting default repository permission to Read (E) affects what unauthenticated/base-level members can see, not PAT expiry.

  16. 16. A platform team's security response plan requires that when a critical security advisory is published for a dependency used by the organization's repositories, the affected repositories are automatically notified within 24 hours. Which GitHub feature fulfills this requirement with no custom tooling?

    • A. CodeQL scheduled scans that run nightly and open issues for new CVEs
    • B. Dependabot alerts, which automatically notify repository administrators when a dependency matches a security advisory in the GitHub Advisory Database(correct)
    • C. Secret scanning alerts that detect new advisory identifiers in code comments
    • D. GitHub Actions workflow triggered by the `security_advisory` event

    Explanation: Dependabot continuously monitors the dependency graphs of enabled repositories against the GitHub Advisory Database. When a new advisory is published that matches a dependency in use, Dependabot creates a security alert in the repository and notifies administrators — typically within hours of the advisory being published. CodeQL (A) analyzes code logic, not dependency advisories, and requires a scheduled workflow. Secret scanning (C) detects exposed credentials, not CVEs in dependencies. While the `security_advisory` webhook event exists, setting up a workflow to handle it (D) requires custom development, whereas Dependabot is a zero-configuration native feature.

  17. 17. An enterprise administrator wants to ensure that every repository's CI/CD workflows use the same approved set of reusable workflow templates. How should these workflows be stored and made available?

    • A. Copy the workflow files into each repository's `.github/workflows/` directory during repository creation
    • B. Store the reusable workflows in a central repository within the enterprise and reference them via `uses:` in consuming workflows(correct)
    • C. Store the workflows in a public GitHub repository so all users can fork them
    • D. Configure GitHub Actions to automatically inject workflow steps from the enterprise settings

    Explanation: The recommended enterprise pattern is to maintain reusable workflows in a dedicated central repository (often named something like `.github` or `shared-workflows`). Consuming repositories reference them via `uses: org/central-repo/.github/workflows/workflow.yml@version`. This centralizes governance and ensures updates propagate to all consumers. Copying files (A) into each repo creates divergence over time. Storing in a public repo (C) exposes internal workflows externally. There is no built-in GitHub Actions feature to automatically inject steps enterprise-wide (D).

  18. 18. An enterprise policy mandates that only actions from the enterprise's own organizations and GitHub-owned actions can be used in any workflow. A repository admin attempts to add a third-party Marketplace action. What happens?

    • A. The action runs normally because repository admins can override enterprise policies
    • B. The workflow fails to run because the action is blocked by the enterprise Actions policy(correct)
    • C. The action is quarantined and runs in a sandbox until manually approved
    • D. The action runs but generates a security alert in the Security tab

    Explanation: Enterprise Actions policies are enforced at runtime — if a workflow references an action that falls outside the allowed policy (e.g., a third-party Marketplace action when only organization and GitHub-owned actions are permitted), the workflow run fails with a policy violation error. Repository admins cannot override enterprise-level policies. There is no automatic quarantine/sandbox mode. Actions blocked by policy do not generate Security tab alerts; the workflow simply fails.

  19. 19. A GitHub Enterprise Cloud organization uses self-hosted runners in an Azure virtual network. Workflows running on these runners need to access an internal API that is not reachable from the public internet. The security team prohibits opening public inbound ports. What is the recommended GitHub-native solution?

    • A. Configure an IP allow list for the runners' public IPs so the internal API allows their traffic
    • B. Use GitHub Actions OIDC to authenticate the runner to Azure AD, then access the internal API via Azure Private Link
    • C. Use GitHub's Azure private networking for self-hosted runners to connect the runner network to the organization's Azure VNet, enabling private access without public ports(correct)
    • D. Store the internal API URL as an encrypted secret and reference it in the workflow

    Explanation: GitHub Enterprise Cloud supports Azure private networking for self-hosted runners, allowing runner virtual machine scale sets to be deployed within an Azure VNet. This gives workflows running on those runners native access to private Azure resources (like an internal API behind a private endpoint) without exposing anything to the public internet. IP allow lists (A) control inbound access to GitHub, not outbound runner connectivity to internal APIs. OIDC + Private Link (B) handles authentication and private routing separately but doesn't address the runner's network placement as cleanly. Storing the URL as a secret (D) doesn't solve the network reachability problem.

  20. 20. An administrator wants to store a database connection string that should be available to all workflows across all repositories in an organization but should not be visible in plaintext to repository maintainers. Which GitHub feature is most appropriate?

    • A. An organization-level configuration variable (`vars`) set to the connection string
    • B. An organization-level encrypted secret (`secrets`) set to the connection string, accessible via `${{ secrets.DB_CONNECTION_STRING }}`(correct)
    • C. A Dependabot secret scoped to the organization
    • D. A repository environment variable shared across all repositories

    Explanation: Organization-level encrypted secrets are stored encrypted and are never exposed in plaintext through the GitHub UI or API — only workflow runs can access the value, and it is masked in logs. Configuration variables (`vars`) (A) store non-sensitive values that are visible in plaintext in the UI. Dependabot secrets (C) are specifically for Dependabot workflows, not general CI/CD workflows. There is no cross-repository shared environment variable feature (D) at the organization level — environment secrets are per-repository.

  21. 21. A self-hosted runner registered to an organization is experiencing intermittent job failures. An administrator needs to diagnose the issue. Which of the following steps are appropriate for troubleshooting self-hosted runner problems? Choose 2.

    • A. Check the runner's application log files located in the `_diag` folder of the runner installation directory(correct)
    • B. Review the runner's status and recent job history in the organization's Settings > Actions > Runners page(correct)
    • C. Check the Dependabot alerts page for any runner-related security issues
    • D. Open a GitHub Support ticket immediately without reviewing any local logs
    • E. Enable debug logging by setting the `ACTIONS_RUNNER_DEBUG` secret to `true` in the repository

    Explanation: The runner's `_diag` directory contains detailed application logs that capture connection attempts, job assignment, and execution errors — these are the primary diagnostic source. The organization's Settings > Actions > Runners page shows runner status (online/offline/idle/busy) and recent job assignments, helping to identify patterns. Dependabot alerts (C) relate to code vulnerabilities, not runner health. Contacting Support (D) before reviewing available diagnostics wastes time and is not the recommended first step. `ACTIONS_RUNNER_DEBUG` (E) provides additional debug output in workflow logs, not runner-level diagnostics, and is set as a secret/variable in the repo, not on the runner itself.

  22. 22. A development team wants to store API keys used by Dependabot to access private package registries. Where should these secrets be stored so they are available specifically to Dependabot update workflows?

    • A. As standard repository secrets accessed via `${{ secrets.API_KEY }}`
    • B. As Dependabot secrets configured in the repository's Settings > Secrets and variables > Dependabot section(correct)
    • C. In the `dependabot.yml` configuration file as plaintext values
    • D. As organization-level configuration variables (`vars`) accessible to all workflows

    Explanation: Dependabot runs in an isolated environment and does not have access to regular repository secrets for security reasons. Secrets that Dependabot needs (such as credentials for private package registries) must be stored as Dependabot-specific secrets in Settings > Secrets and variables > Dependabot. These are separate from Actions secrets. Referencing `${{ secrets.API_KEY }}` in a Dependabot-triggered workflow (A) will not work because Dependabot cannot read Actions secrets. Plaintext values in `dependabot.yml` (C) would be exposed in the repository. Configuration variables (D) are non-sensitive and not appropriate for API keys.

  23. 23. An enterprise administrator wants to investigate whether a specific user performed an action that deleted a repository two days ago. Which tool provides the most direct answer?

    • A. The organization's Insights > Code frequency graph
    • B. The enterprise or organization audit log, filtered by the `repo.destroy` action and the relevant time range(correct)
    • C. The user's public GitHub profile activity feed
    • D. GitHub Support's server logs, requested via a support ticket

    Explanation: Repository deletion events are recorded as `repo.destroy` in the GitHub audit log, along with the actor (who did it), timestamp, and repository name. Filtering the audit log by this action and the past 48 hours provides a direct, authoritative answer. Code frequency graphs (A) show commit activity over time, not admin events. The user's public activity feed (C) only shows public contributions, not admin actions. GitHub Support logs (D) are an escalation path, unnecessary when the audit log contains the information.

  24. 24. An enterprise has 500 GitHub Enterprise Cloud seats but the billing dashboard shows only 320 active users in the past 90 days. The finance team wants to optimize costs. What should the administrator do to identify and reclaim unused seats?

    • A. Export the license usage report from enterprise billing, identify users with no login activity in 90 days, and remove them from the enterprise after confirming with team leads(correct)
    • B. Immediately delete all 180 unrecognized accounts to reduce the license count
    • C. Purchase additional seats proactively to avoid hitting the limit in the future
    • D. Enable GitHub Actions for all repositories to increase developer productivity and justify the existing seat count

    Explanation: The correct process is to export the license usage report (which includes last login date per user), identify inactive accounts, and coordinate with team leads to confirm they are genuinely unused before removing them. This prevents accidentally removing accounts that are still needed. Immediately deleting 180 accounts (B) risks removing active users or service accounts. Purchasing more seats (C) increases costs without solving the problem. Enabling Actions (D) does not reclaim seats.

  25. 25. An administrator is reviewing GitHub Actions usage for the enterprise and notices that Actions minutes consumption has increased 300% month-over-month. Which approaches help identify the root cause and optimize costs? Choose 2.

    • A. Review the Actions usage report in enterprise billing to identify which repositories and workflows are consuming the most minutes(correct)
    • B. Set spending limits for GitHub Actions at the enterprise level to prevent further overage charges
    • C. Disable GitHub Actions entirely for the enterprise until the cause is identified
    • D. Analyze workflow configurations to identify unnecessary triggers (e.g., running full builds on every push to all branches) and optimize caching and artifact retention(correct)
    • E. Migrate all repositories to self-hosted runners immediately to avoid billed minutes

    Explanation: The first step is to identify the source of the increase using the Actions usage report (A), which breaks down consumption by repository and workflow. Once the heavy consumers are identified, workflow optimization (D) — fixing overly broad triggers, adding matrix fail-fast, improving cache hit rates, trimming unnecessary steps — is the targeted fix. Setting spending limits (B) prevents overage charges but doesn't reduce consumption or identify the cause. Disabling Actions entirely (C) halts all CI/CD and is too disruptive. Migrating to self-hosted runners (E) eliminates billed minutes but requires significant infrastructure investment and may not be appropriate for all teams.