opsenDocs
Findings

Seats and invitations

.md

Dormant members, dormant outside collaborators, and invitations that hold a seat.

GitHub bills Team and Enterprise organisations per seat. A seat is held by every member, by every outside collaborator with access to a private repository, and by every pending invitation.

Dormant members

seats.dormant_member

A member is dormant when none of these happened in the last 90 days:

  • a push to any branch, a pull request, a review, or a comment, in any repository opsen can read;
  • any Copilot activity, by GitHub's own last_activity_at.

Bots (type: Bot, or a login ending [bot]) are never counted.

How it is priced
monthly = dormant members × seat price

The seat price is your contract price if entered under Settings, otherwise GitHub's list price for the organisation's plan.

Note

opsen does not remove members. Removing someone loses their forks of private repositories and their team memberships, and the person may be on leave. The finding exports as CSV for whoever owns that decision.

Dormant outside collaborators

seats.dormant_outside_collaborator

The same rule, applied to outside collaborators. On paid plans an outside collaborator with access to a private repository occupies a seat. Removing their access is done per repository in GitHub, so this finding also exports rather than acts.

Stale invitations

seats.stale_invitations

An invitation pending for more than 7 days, or one GitHub reports as failed. Pending invitations count towards the organisation's filled seats.

Action: select invitations and press Cancel selected invitations. Each is withdrawn with DELETE /orgs/{org}/invitations/{id}. The person can be invited again at any time.

When these are withheld

Dormant-seat findings need to see every repository a person could be working in. They are withheld when the installation has a repository selection, or when too many repositories' activity could not be read. Stale invitations do not depend on activity and are always reported.