Skip to main content

Overview

nOps uses a GitHub personal access token (classic) plus your organization slug and/or enterprise slug to pull billing, usage, and seat data into Inform. Credentials are stored securely, validated before save, and are not shown again after you connect. This is a cost and usage integration. It is separate from GitHub Issues in the recommendation workflow, which uses an organization connection and a repository destination. Connecting this card does not enable issue creation. nOps reads:
  • Cost & usage — metered spend by product, SKU, repository, and day (Actions, Codespaces, Packages, Git LFS/Storage, Copilot, GHAS, …).
  • Copilot attribution — premium-request and AI-credit consumption per user and model, plus Copilot seat assignments.
  • Members & seats — your organization member roster (paid user seats) and, for enterprise connections, per-user consumed licenses.
nOps currently accepts only a classic personal access token. Fine-grained PAT support is planned; enterprise billing endpoints are classic-PAT-only on GitHub’s side regardless.
Only admins and owners can connect, re-validate, or disconnect in nOps. Members see Admin Only on connectable cards.

Required access

The token owner must be an organization owner or billing manager (for org connections) and/or an enterprise administrator or billing manager (for enterprise connections). Your account must be on GitHub’s enhanced billing platform (required for the billing usage REST endpoints). nOps organization administrator access is required to connect.

Token scopes

Select these scopes when creating your classic PAT:
  • admin:orgrequired for organization connections (GitHub’s billing usage API; read:org and write:org are not sufficient)
  • manage_billing:copilot — Copilot seats & billing (only if you use Copilot)
  • read:enterpriserequired for enterprise connections (enterprise billing usage and consumed licenses)
Why admin:org — and what nOps actually does with it. GitHub classifies organization billing as org administration, not org membership, and it never shipped a billing-only classic scope for organizations. Enterprises get manage_billing:enterprise; the only children of admin:org are write:org, read:org, and manage_runners:org — there is no manage_billing:org. The older billing endpoints that read:org could reach have been retired in favor of the enhanced billing platform, so on a classic PAT admin:org is the narrowest scope GitHub offers.nOps only sends GET requests to billing read endpoints (usage summaries, premium requests, Copilot seats, members). It does not create, modify, or delete organizations, teams, members, or settings. To keep the credential tight, use a dedicated service account, set a short expiry, and rotate on a schedule.
read:org covers the member roster but not organization billing — GitHub answers billing requests with 404, not 403, so an under-scoped token looks like a wrong slug. Grant Copilot and enterprise scopes only when you need that data; missing optional scopes skips those datasets but does not block cost/usage.

Create the token

  1. Sign in to GitHub as an org owner/billing manager or enterprise admin/billing manager.
  2. Go to Settings → Developer settings → Personal access tokens → Tokens (classic).
  3. Click Generate new token (classic), add a note (for example nOps Integration), and set an expiration.
  4. Select admin:org, manage_billing:copilot (if you use Copilot), and read:enterprise (for enterprise connections).
  5. Generate and copy the token immediately — it is shown only once.
See GitHub billing usage REST API and Automating usage reporting for endpoint and permission details.

Connect in nOps

Where to open GitHub

  • To connect for the first time — go to Settings → Integrations and click the GitHub card.
  • To manage an existing connection — go to Settings → Account Status → Connected apps and click the GitHub chip to re-validate or disconnect.

Connect steps

  1. Click the GitHub card or chip.
  2. Paste your classic personal access token.
  3. Enter your Organization slug and/or Enterprise slug (at least one is required).
  4. Click Connect.
nOps validates the token with the GitHub API before storing it and rejects the connection with a clear error if validation fails. Billing data sync uses the slugs you provide to call the appropriate organization and/or enterprise endpoints.

Manage your connection

Administrators can Re-validate or Disconnect from the modal. Rotate the token in GitHub before expiry and update the connection in nOps.

Troubleshooting

  • Invalid token — confirm the token owner has a billing role and the token is a classic PAT with the right scopes.
  • Validation fails / organization not found — add admin:org to your classic PAT. GitHub returns “not found” when the token lacks billing scope even if the org slug is correct; read:org and write:org are not enough. If admin:org is already present, confirm the token owner is an org owner or billing manager — a PAT cannot grant access its owner does not have.
  • No enterprise data / 403 on enterprise — regenerate a classic PAT with read:enterprise and an enterprise billing role.
  • No Copilot or member data — add manage_billing:copilot to your classic PAT. Missing Copilot scope skips that dataset but does not block cost/usage.
  • Missing org or enterprise — enter at least one slug so nOps knows which account to report on.
  • No billing data — your organization or enterprise may not yet be on the enhanced billing platform; verify in GitHub billing settings.
  • No data in Inform — allow up to 24 hours after connecting for the first sync.

Security

Do not share the token or store it in public repositories. Grant only the scopes you need, rotate tokens on a regular schedule, and disconnect in nOps when rotating.

Reference