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
Section titled “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-onlyals die optie zichtbaar is (afhankelijk van plan)
Classic PAT alternatief:
manage_billing:copilot · read:audit_log · read:orgscopes.
2. Token verbinden in monsys
Section titled “2. Token verbinden in monsys”Dashboard → Copilot Audit → + Org verbinden
- Org login: de letterlijke org slug uit GitHub (bv.
acme-corpuitgithub.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 verlopen403→ scopes ontbreken (probeer eerst manueelcurl 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
Section titled “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 opgithub_event_id.
Resultaat zichtbaar in:
Dashboard → Copilot Audit → SEATStabelDashboard → Copilot Audit → EVENTStabelDashboard → Copilot Audit → KPI stripbovenaan
4. Maandelijks evidence pack
Section titled “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):
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 periodeVerifier is dezelfde als voor AI observability packs:
python3 tools/evidence-pack-verify.py pack-N.tar.gz \ --expected-pubkey <jouw pinned monsys signing key>5. Pricing
Section titled “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
Section titled “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
Section titled “Volgende stappen”- Data model — welke velden, welke worden gehasht
- Evidence pack format — verschillen met AI observability packs