FixControl/Documentatie

Gebruikershandleiding

Database-connector — voor operators

Wat je ziet als de AI een read-only database-connector gebruikt tijdens triage van BUG-tickets, en hoe je een query-shape goedkeurt of intrekt.

Komt er een BUG-ticket binnen, dan kan de patch-agent een gekoppelde database vragen om een paar SELECTs te draaien om de werkelijke staat te zien van de rij waar een klant over klaagt. Deze pagina is wat een operator (jij) ziet en doet met die flow. De setup staat in de admin guide; deze pagina heb je pas nodig zodra een admin de integratie heeft gekoppeld en aangezet.

De connector is read-only. Hij kan niet schrijven, alteren of deleten; de database-engine zelf wijst alles af wat geen SELECT is in een READ ONLY transactie.

Wat je ziet op een BUG-ticket

Heeft de connector tijdens triage queries gedraaid, dan bevat de QA-notes op het ticket een sectie Database diagnostics (read-only). Per query die de agent draaide:

  • Een reason op één regel — waarom de agent die data wilde.
  • Een kleine markdown-tabel met tot 10 result-rijen.
  • Metadata: row count, of het truncated was (er waren meer rijen maar de 50-rijen / 64 KB cap vuurde), welke kolommen redacted zijn, en de query-duur.

Werd een voorgestelde query geblokkeerd, dan zie je in plaats daarvan een placeholder-regel:

  • (awaiting approval) <reason> — proposed query touches <tables> — de AI wil een nieuwe shape draaien; staat in de queue voor jouw approval.
  • (blocked: <code>) <sql> — de SQL-guard wees 'm af (bijv. forbidden keyword, schema niet op de allowlist). Een approval helpt hier niet; de agent moet herformuleren of jij pakt het offline op.
  • (failed: <code>) <reason> — de query draaide maar de engine gaf een error (timeout, lock, read-only-violation).

De agent ziet de connector als additieve context. Staat 'ie uit, geeft 'ie niets terug, of wordt elke query geblokkeerd, dan loopt triage door op de rest van het ticket — geen ontsporing.

Een query-shape goedkeuren

Approval queue
Approval queue

Open Settings → Integrations → Database → Pending approvals. De queue toont elke shape die de AI heeft voorgesteld maar die nooit goedgekeurd is.

Een "shape" is de structuur van de query, geen specifieke run. Keur je SELECT id, status FROM orders WHERE id = $1 goed, dan draait elke toekomstige query die naar dezelfde shape hashed — zelfde SQL met om het even welke literal-waarde — automatisch. Bewust zo: bug-triage raakt vaak dezelfde query tegen verschillende keys.

Per rij zie je:

  • De reason die de agent gaf voor het voorstel.
  • De tables die de query raakt.
  • Een ambergele sensitive-data-hint als één van de touched tables matcht met een voor-de-hand-liggend gevoelig pattern (users, customers, payments, tokens, …). De hint is advisory; de runtime-redactor pakt zelf de gevoelige data op kolom-niveau.
  • De volle shape sample — de SQL met literals geblankt. Dit is exact wat gecached wordt als je approve klikt.
  • De shape-hash (eerste 12 chars).

Met de tabs schakel je tussen pending, active en revoked.

  • Approve verplaatst de rij naar active. De volgende agent-run die deze shape matcht draait 'm.
  • Revoke (op een active-rij) markeert de shape als ingetrokken. Toekomstige runs van die shape komen weer als pending in de queue; de revoke-reden die je opgeeft blijft bewaard voor audit.

Wat je niet zou moeten goedkeuren:

  • Queries op tables die je nooit in chat met een junior dev zou plakken.
  • SELECT * op een brede table (de column-name redactor doet z'n best, maar je kunt beter de agent vragen kolommen op te sommen).
  • Iets dat tenants of trust-grenzen kruist die jij binnen de database onderhoudt.

Wat de AI niet kan

Zelfs met de integratie aan en een goedgekeurde shape:

  • Hij kan niet schrijven, updaten, deleten of DDL-en — de engine-level READ ONLY transactie is de primaire verdediging; de SQL-guard de tweede.
  • Hij kan geen schemas of tables zien buiten de geconfigureerde allowlist.
  • Hij kan niet meer dan 50 rijen of 64 KB per query terugkrijgen.
  • Hij kan geen kolommen zien waarvan de naam lijkt op email, phone, password, token, ssn, iban, etc. — die komen terug als [redacted] en de redacted column names worden op de audit-rij genoteerd.
  • Hij kan de per-shape gate niet omzeilen tenzij een admin Auto read-only diagnostics expliciet heeft aangezet, wat de mens-in-de-loop ruilt voor snelheid maar elke andere safeguard intact laat.

Wanneer ingrijpen

  • Het diagnostics-blok staat vol met (awaiting approval)-regels en het ticket loopt vast → loop de queue door en approve of revoke elke shape.
  • Een shape die je eerder approvede wordt misbruikt (andere reden, verdachte tables) → revoke 'm. De agent zet een verse proposal terug in de queue.
  • De integratie staat op Read-only not verified → admin-werk; de connector laat de AI 'm pas gebruiken als de engine bevestigt dat de role niet kan schrijven.

Wil je een papieren spoor zonder de DB te openen, dan staat elke query die de connector draaide in de audit-log (event-namen beginnen met database.query.) met issue-ID, shape-hash, redacted-column-lijst, en duur.

Iets onduidelijk of fout?Laat het ons weten →

FixControl is een handelsnaam van FixControl B.V. i.o.