Join our Newsletter — 33% off our NHI Course

What do teams get wrong when reviewing permissions for installed GitHub apps?

Teams often focus on whether an app is useful instead of whether its permissions are proportionate. Excessive permissions, broad repository access, and weak visibility into who installed the app or where it is used all increase risk. A sound review checks scope, repository boundaries, behavior, and whether the requested permissions match the app’s real function.

What reviewers miss about app permissions

Permission review for installed GitHub apps often goes wrong because teams treat the app as a productivity purchase instead of an access-bearing integration. The real question is not whether the app is helpful, but whether its scopes, repository reach, and operational behavior are tightly bounded to the function it actually performs.

A good review starts by comparing the requested permissions with the app’s narrowest legitimate use case, then checking whether the app can see more repositories, metadata, or content than it truly needs. That matters because an app with broad access can become a durable pathway into code, secrets, and release workflows even when the original install looked routine.

Reviewers also miss the difference between “works for the team” and “is safe everywhere it is installed.” One app can be appropriate in a sandbox repository and excessive in a production org, so the approval decision should reflect repository boundaries, ownership, and the blast radius of a compromised integration.

Signals that the review is too shallow

Shallow reviews usually show up as checkbox approvals: the app name is familiar, the request appears common, or someone assumes marketplace presence implies safety. That approach ignores whether the permissions are proportionate, whether the app can operate across too many repositories, and whether the install creates standing access that outlives the immediate task.

Another common blind spot is weak visibility into who approved the app and where it is deployed. If teams cannot quickly answer which repositories, environments, or business units rely on the app, they cannot judge exposure when the app is over-permissioned, compromised, or simply no longer needed.

  • Compare each requested scope to the app’s concrete function, not its marketing description.
  • Check whether repository access is limited to the smallest viable set.
  • Confirm who installed the app, who owns it, and whether the deployment footprint is documented.
  • Reassess any app that requests access broader than the team can explain in plain terms.

That discipline is especially important for integrations that can read source, manage pull requests, or affect automation pipelines, because those capabilities can indirectly influence code integrity and delivery trust.

Risk and Threat Considerations

Installed GitHub apps can become high-value trust anchors if their permissions are broader than necessary or if their deployment is poorly tracked. The main risk is not just accidental misuse, but abuse of an app’s standing access to reach repositories, content, or workflows that were never intended to be in scope.

Failure mechanism: Excessive permissions, broad repository access, or unclear install ownership creates a durable access path that is hard to scrutinize quickly and easy to overtrust after approval.

Impact: A compromised or misused app can expose code, secrets, or workflow control, and the wider the repository footprint, the larger the potential blast radius across the organisation.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10 and MITRE ATT&CK address the attack and risk surface, while CIS Controls v8 and NIST CSF 2.0 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP Non-Human Identity Top 10 NHI-01 — Non-Human Identity Inventory and Ownership GitHub apps are access-bearing integrations that need clear ownership and install visibility.
NHI-02 — Secrets and Credential Management App permissions can expose tokens, secrets, and other identity-bearing material through repository access.
NHI-03 — Least Privilege and Permission Scope The question is fundamentally about whether requested permissions are proportionate to function.
Recommendation — Inventory each app, assign ownership, and review where it is installed and used. Limit app access to repositories and data that are strictly required. Approve the minimum scopes needed for the app's documented behavior.
CIS Controls v8 6 — Access Control Management GitHub app installs are access pathways that should be restricted and reviewed by need.
5 — Account Management Reviewers need accountable install ownership and lifecycle control over deployed apps.
Recommendation — Restrict app access to approved repositories and remove unneeded installs promptly. Track app owners, approved installations, and removal triggers for stale access.
NIST CSF 2.0 PR.AC — Access Control Permission review is an access-control problem centered on scope, authorization, and bounded reach.
Recommendation — Enforce least-privilege access for every installed GitHub app.
MITRE ATT&CK T1098 — Account Manipulation Over-permissioned apps can be abused to persist or extend access in GitHub environments.
Recommendation — Monitor app permissions and investigate unexpected expansion of repository access.

Practitioner Guidance

What to verify: Reviewers should be able to map every permission to a specific app function and every repository in scope to a stated business need. If the team cannot explain why an app needs broad org-wide visibility, treat that as a warning sign, not an administrative detail.

Decision rule: If the app can perform its job with narrower repository access or fewer scopes, approve only the reduced set. If the app’s behavior is opaque, especially around data access or automation actions, defer approval until the install can be justified at the permission level.

Practitioner takeaway: The safest review is the one that tests necessity at the permission and repository level, because “useful” is not the same thing as “appropriately bounded.”