Developer operations
Give each GitHub automation only the authority it needs
Replacing a long-lived personal token can improve ownership, but a new credential type does not automatically create a safer workflow. Start by mapping the actions your automation performs and the scope each one needs.
GitHub announced enterprise GitHub App installations as generally available on 23 October, expanding administrative and governance API coverage. The announcement separately places these updates in GHES 3.24; hosted availability does not establish support in an existing Enterprise Server installation. (GitHub)
GitHub distinguishes repository, organisation, enterprise and account permissions. User access tokens involve the user's rights as well as the app's; installation tokens follow the app's permissions. Check endpoint support, token type and installation scope for the actual workflow. (GitHub)
Write an action ledger before registering permissions
| Action | Scope question | Write boundary |
|---|---|---|
| Read repository policy | Which enterprise/organisation owns the resource? | Read only |
| Prepare a settings change | Which endpoint and permission support the proposal? | Generate a reviewable diff first |
| Apply an approved ruleset change | Who can approve it, and which resources are included? | Explicit approved change set |
| Report completion | Where is the observed state checked? | Read back rather than trusting a successful submission |
An existing script may mix harmless reporting with changes to access controls. Split those responsibilities where practical. A reporting job should not inherit write permissions merely because another function in the same repository needs them.
Compare the options by the job they perform
A classic PAT often grows around a person's account and historical scripts. A GitHub App lets you define an application identity and its requested permissions, but it still needs an owner, secure key handling, installation scope and a revocation procedure. Avoid claiming that every current script or endpoint can be migrated unchanged.
- Inventory every API action and the current credential it uses, without copying secrets into the worksheet.
- Confirm the required permission against current endpoint documentation and your hosted or server edition.
- Identify what breaks if the installation is removed or a permission change is not approved.
- Assign ownership for private keys, token issuance, deployment and review of access changes.
Run a read-only pilot with explicit exit criteria
Choose one reporting task and a restricted resource scope. Compare its output with the existing process, including empty results, forbidden resources and pagination. Keep the current production job available until the replacement's behaviour is understood; do not run two writers against the same settings as a migration test.
Once read behaviour is accepted, a write-capable pilot needs a small approved change, a read-back check and a recovery plan for that particular setting. A successful API response is not the same as proving that only the intended resources changed. Record unexpected denials as missing permissions to investigate, not as a reason to grant everything.
Account for the operating work
Implementation effort includes updating authentication code, handling expiry or invalid credentials, monitoring failures and revisiting permissions when the workflow changes. Check current token-lifetime rules in the applicable documentation before planning rotation; no universal duration is assumed here.
For an agency, keep client installations and authority clearly separated from internal tools. Technical delivery for agencies should define who owns the app and its access at handover. This article is a migration design, not a claim that we changed or tested a reader's enterprise configuration.
Sources
- Enterprise installations for GitHub Apps generally available — GitHub · 2026-10-23
- Choosing permissions for a GitHub App — GitHub