Skip to main content
Prowler for GitHub offers multiple authentication types across Prowler Cloud and Prowler CLI.

Common Setup

Authentication Methods Overview

Prowler offers three authentication methods. Fine-Grained Personal Access Tokens are recommended for most use cases.
Which should I choose?
  • Personal scanning or quick setup: Use Fine-Grained PAT
  • Organization-wide scanning or CI/CD pipelines: Use GitHub App (recommended for production)
  • Building apps with user authorization: Use OAuth App
Classic Personal Access TokensGitHub has deprecated classic Personal Access Tokens. Use Fine-Grained Tokens instead - they provide granular permission control and better security.

Required Permissions

Required permissions depend on the scan scope: user repositories, organization repositories, or both.

Repository Permissions

Required for scanning repository security settings:
Pull requests permission is optional. It’s only needed if you want to audit PR-specific settings beyond what branch protection provides.

Organization Permissions

Required for scanning organization-level security settings:
For Fine-Grained PATs: Organization permissions only appear when the Resource Owner is set to an organization (not your personal account).For GitHub Apps: Organization permissions are configured during app creation and apply to all organizations where the app is installed.

Account Permissions (Fine-Grained PAT only)

GitHub Apps don’t have account-level permissions - they operate at the organization/repository level.

Permissions and Check Coverage

With the Read-only permissions listed above, Prowler can run: Check that returns MANUAL status with Read-only permissions:
  • repository_branch_delete_on_merge_enabled
About Write PermissionsThe delete_branch_on_merge setting is only returned by the GitHub API when the token has Administration: Read and write permission.Granting Write permissions is not recommended under any circumstances:
  • Token can modify repository settings
  • Token can change branch protection rules
  • Violates the principle of least privilege
Recommendation: Accept MANUAL status for this single check rather than granting write access. This limitation applies equally to Fine-Grained PATs and GitHub Apps.

Step-by-Step Permission Assignment

Benefits of Fine-Grained Tokens Fine-Grained Personal Access Tokens are ideal for:
  • Individual users scanning their own repositories
  • Quick setup without app registration overhead
  • Temporary access with mandatory expiration
  • Repository-specific access when you only need to scan certain repos
Create a Fine-Grained Token:
Quick Setup: Use these pre-configured links to create a token with the required permissions already selected:For organization scanning, change the Resource Owner to the target organization after the page loads. Organization permissions only appear when an organization is selected.
  1. Navigate to GitHub Settings > Developer settings.
  2. Click Personal access tokens > Fine-grained tokens > Generate new token.
  3. Configure basic settings:
    • Token name: Descriptive name (e.g., “Prowler Security Scanner”)
    • Expiration: 90 days or less (recommended)
    • Resource owner:
      • Personal account (for user repositories)
      • Organization name (for organization scanning - requires admin approval)
    • Repository access: “All repositories” (recommended)
  4. Configure Repository permissions:
    • Administration: Read
    • Contents: Read
    • Metadata: Read (auto-selected)
    • Dependabot alerts: Read
  5. Configure Organization permissions (only appears when Resource owner is an organization):
    • Administration: Read
    • Members: Read
  6. Configure Account permissions:
    • Email addresses: Read (optional)
  7. Click Generate token and copy the token immediately.
GitHub shows the token only once. Store it securely.
GitHub Fine-Grained Token Permissions

OAuth App Token

Recommended OAuth App Use Cases: Use OAuth App Tokens when building applications that need delegated user permissions and explicit user authorization. OAuth Scopes:
  • repo: Full control of repositories
  • read:org: Read organization and team membership
  • read:user: Read user profile data
Create an OAuth App:
  1. Navigate to GitHub Settings > Developer settings > OAuth Apps.
  2. Click New OAuth App and complete:
    • Application name
    • Homepage URL
    • Authorization callback URL
  3. Obtain authorization code:
  4. Exchange authorization code for access token:

GitHub App Credentials

When to Use GitHub AppsGitHub Apps are ideal for:
  • Organization-wide scanning without tying access to a personal account
  • CI/CD pipelines where you need machine identity (not user-based)
  • Multi-organization setups with centralized app management
  • Audit compliance where you need to track app-level access separately from users
GitHub Apps use the same permission model as Fine-Grained PATs - both provide full access to all Prowler checks.
GitHub App Permissions: If a GitHub App is required: Repository permissions: Organization permissions: Create a GitHub App:
  1. Navigate to GitHub Settings > Developer settings > GitHub Apps.
  2. Click New GitHub App and complete:
    • GitHub App name: Descriptive name (e.g., “Prowler Security Scanner”)
    • Homepage URL: Your organization’s URL or Prowler documentation
    • Webhook: Uncheck “Active” (Prowler doesn’t need webhooks)
  3. Configure Repository permissions (see table above):
    • Administration: Read
    • Contents: Read
    • Metadata: Read (auto-selected)
    • Dependabot alerts: Read
  4. Configure Organization permissions (see table above):
    • Administration: Read
    • Members: Read
  5. Under Where can this GitHub App be installed?, select:
    • “Only on this account” for single-organization use
    • “Any account” if you need to install across multiple organizations
  6. Click Create GitHub App.
  7. On the app settings page:
    • Record the App ID (displayed at the top)
    • Click Generate a private key and download the .pem file
  8. Install the GitHub App:
    • Click Install App in the left sidebar
    • Select target account/organization
    • Choose “All repositories” or select specific repositories
    • Click Install
Private Key SecurityStore the .pem private key securely. Anyone with this key can authenticate as your GitHub App. Never commit it to version control.

Prowler Cloud Authentication

For step-by-step setup instructions for Prowler Cloud, see the Getting Started Guide.

Using Personal Access Token

  1. In Prowler Cloud, navigate to Configuration > Providers > Add Provider > GitHub.
  2. Enter your GitHub Account ID (username or organization name).
  3. Select Personal Access Token as the authentication method.
  4. Enter your Fine-Grained Personal Access Token.
  5. Click Verify to test the connection, then Save.

Using OAuth App Token

  1. Follow the same steps as Personal Access Token.
  2. Select OAuth App Token as the authentication method.
  3. Enter your OAuth App Token.

Using GitHub App

  1. Follow the same steps as Personal Access Token.
  2. Select GitHub App as the authentication method.
  3. Enter your GitHub App ID and upload the private key (.pem file).
For complete step-by-step instructions, see the Getting Started Guide.

Prowler CLI Authentication

Authentication Methods

Prowler CLI automatically detects credentials using environment variables in this order:
  1. GITHUB_PERSONAL_ACCESS_TOKEN
  2. GITHUB_OAUTH_APP_TOKEN
  3. GITHUB_APP_ID and GITHUB_APP_KEY

Using CLI Flags

Scan Scope

Understanding Scan ScopeWhat Prowler scans depends on the invocation method:Key Point: Scanning user repositories does NOT include organization-level checks. To audit organization MFA, security policies, etc., you must use --organization.
Scan user repositories:
Scan organizations:
Filter scans:
For complete step-by-step instructions, see the Getting Started Guide.

Troubleshooting

”Insufficient Permissions” Errors

Symptom: Checks fail or return MANUAL status. Solutions:
  1. Verify token has all required permissions
  2. For organization scans, ensure organization approved the Fine-Grained Token
  3. For merge settings checks, accept MANUAL status (Write permission not recommended)

“No Organizations Found”

Symptom: Prowler doesn’t find organizations even though you’re a member. Cause: Fine-Grained Token’s Resource Owner is set to personal account. Solution: Create a new token with Resource Owner set to the organization and get it approved by an admin.

Organization Checks Return MANUAL

Symptom: Checks like organization_members_mfa_required return MANUAL. Cause: Token lacks Organization → Administration: Read permission. Solutions:
  1. Edit token and grant Organization → Administration: Read
  2. Ensure token’s Resource owner is the organization (not personal account)
  3. Get organization admin approval

Token Not Showing Organization Permissions

Symptom: Can’t find Organization permissions section when creating token. Cause: Resource owner is set to personal account. Solution: Change Resource owner dropdown to the organization name. Organization permissions section will appear.

Rate Limiting

Symptom: “API rate limit exceeded” errors. Solutions:
  • Scan during off-peak hours
  • Use --repository to scan specific repos instead of all
  • Implement delays between scans

Token Expired or Revoked

Symptom: Authentication fails with valid-looking token. Solutions:
  1. Check token expiration date in GitHub settings
  2. Verify token wasn’t revoked
  3. For Fine-Grained Tokens, check if organization approval was revoked
  4. Generate a new token

Additional Resources