Ga naar inhoud

Copilot Audit — Quick Start

monsys.ai Copilot Audit is een aparte module van de AI observability laag. Het haalt GitHub Copilot Business/Enterprise seat-data + audit-log op via GitHub’s eigen admin API, bewaart usernames gehashed, en bundelt maandelijks alles in een Ed25519-getekend evidence pack.

Wie heeft dit nodig? Bedrijven die Copilot Business of Enterprise hebben uitgerold aan hun medewerkers en onder AI Act art. 26 (deployer- verplichtingen) of NIS2 art. 21 vallen.

1. GitHub PAT met de juiste scopes

In github.com → Settings → Developer settings → Fine-grained personal access tokens → Generate new token:

  • Resource owner: jouw GitHub organization (NIET je persoonlijk account)
  • Expiration: 90 dagen aanbevolen (langer mag, korter moet je vaker rotaten)
  • Permissions / Organization permissions:
    • Administration: Read-only (voor audit-log)
    • Members: Read-only (voor seat lijst)
    • Copilot: Read-only als die optie zichtbaar is (afhankelijk van plan)

Classic PAT alternatief: manage_billing:copilot · read:audit_log · read:org scopes.

2. Token verbinden in monsys

Dashboard → Copilot Audit → + Org verbinden

  • Org login: de letterlijke org slug uit GitHub (bv. acme-corp uit github.com/acme-corp)
  • PAT: plakken — verschijnt slechts éénmaal in de UI, daarna AES-256-GCM versleuteld in de DB

Direct na “Verbinden” probeert monsys.ai een GET /orgs/{org} om te checken of de PAT werkt. Werkt het niet:

  • 401 → PAT verkeerd geschreven of verlopen
  • 403 → scopes ontbreken (probeer eerst manueel curl https://api.github.com/orgs/{org} -H "Authorization: Bearer YOUR_PAT")
  • 404 → org-naam fout, of jij hebt geen org-membership

3. Eerste pull binnen 1 uur

Onze worker CopilotPullWorker draait elk uur. Bij startup van de hub of vlak na het verbinden van een org wordt direct één keer geprobeerd.

Wat er pulled wordt:

  • Seats (/orgs/{org}/copilot/billing/seats): volledige snapshot. Elke pull vervangt de vorige snapshot voor die org.
  • Audit events (/orgs/{org}/audit-log?phrase=action:copilot): cursor-paginatie sinds de laatste pull. Idempotent op github_event_id.

Resultaat zichtbaar in:

  • Dashboard → Copilot Audit → SEATS tabel
  • Dashboard → Copilot Audit → EVENTS tabel
  • Dashboard → Copilot Audit → KPI strip bovenaan

4. Maandelijks evidence pack

Op de 1e van elke maand kan je een signed evidence pack genereren via hetzelfde endpoint als AI observability (eindstand komt nog):

Terminal window
POST /api/v1/copilot/evidence-packs
{
"period_start": "2026-04-01T00:00:00Z",
"period_end": "2026-04-30T23:59:59Z"
}

Levert een tarball met:

pack-N.tar.gz
├── manifest.json — schema_version: 2, module: "copilot"
├── manifest.sig — Ed25519 over manifest.json
├── seats.jsonl — één regel per seat-snapshot
└── events.jsonl — alle audit events in periode

Verifier is dezelfde als voor AI observability packs:

Terminal window
python3 tools/evidence-pack-verify.py pack-N.tar.gz \
--expected-pubkey <jouw pinned monsys signing key>

5. Pricing

€1 per gemiddelde seat per maand. Dagelijkse snapshot van actieve seats wordt opgeslagen in copilot_daily_seats; aan het eind van de maand neemt billing het gemiddelde + ceil.

Voorbeeld: 30 seats op 1 januari, schalen naar 35 op de 15e, blijft 35.

  • Avg = (30×14 + 35×17) / 31 = (420 + 595) / 31 ≈ 32.7 → afgerond 33 seats
  • Factuur januari: 33 × €1 = €33

Tenant zonder verbonden org betaalt niets.

6. Wat je medewerkers ZIEN

Niets. monsys.ai praat alleen met GitHub’s admin API; er staat geen extension/agent op de werkstation van de developer. We hashen usernames voor opslag — als jij (HR/compliance) een username wil terugvinden, match je het 4-teken prefix tegen je HR-systeem. Wij hebben de mapping niet.

Volgende stappen