Przejdź do głównej zawartości

Governance i autonomia: człowiek przy bramkach

Nadzór nad agentami AI (governance) przypisuje każdej zmianie klasę ryzyka (niską, średnią, wysoką lub krytyczną) i to ta klasa, a nie pewność agenta ani producent narzędzia, decyduje, co agent może zrobić sam. Guardrails ograniczają agenta w trakcie pracy; bramki rozstrzygają, czy dowody wystarczą do merge lub wydania. Bramki dla klas wysokiej i krytycznej należą do wskazanych ludzi.

Ta strona jest dla CTO i tech leadów, którzy odpowiadają za politykę autonomii. Twoi agenci już otwierają pull requesty w nocy. Na przeglądzie incydentu ktoś pyta, kto zatwierdził migrację, która usunęła kolumnę, a uczciwa odpowiedź brzmi: „własny review agenta i linijka w CLAUDE.md, że ma nigdy nie dotykać produkcji”. To rada, nie kontrola. Ta strona zastępuje ją kontrolami, które da się wskazać palcem.

  • Tabelę czterech klas ryzyka: co agent może zrobić sam i jakiej decyzji człowieka wymaga każda klasa.
  • Mapę rozmieszczenia guardrails i bramek w cyklu życia, z dowodem, jaki zostawia każda z nich.
  • Egzekwowanie granic w Claude Code, Codex i Cursorze, tak aby granica leżała poza modelem.
  • Prompt kontraktu dowodowego i szablon polityki do przyjęcia bez zmian.
  • Ćwiczenie kontroli i cztery metryki, które dowodzą, że kontrole działają, bez czytania każdego diffa.

Klasyfikuj według kosztu pomyłki, nie według rozmiaru diffa. Oceń pięć czynników: zasięg szkód, wrażliwość danych, odwracalność, wpływ regulacyjny i zakres poświadczeń, których potrzebuje uruchomienie. Decyduje najwyższy czynnik. Trzylinijkowa zmiana w obsłudze sesji jest krytyczna, nawet gdy agent jest pewny swego.

Klasa ryzykaTypowa zmianaAgent możeBramkaWymagana decyzja człowieka
NiskaTesty, dokumentacja, research, narzędzia wewnętrzne, izolowane refaktoryzacje pod zielonymi testamiEdytować izolowany checkout, uruchamiać lokalne checki, otworzyć PRZielone CI i kompletny pakiet dowodówLekkie review i merge przez dowolną osobę z zespołu
ŚredniaFunkcja w jednym serwisie, aktualizacje zależności, zmiany w preview lub staginguUżywać zawężonych poświadczeń nieprodukcyjnych i zatwierdzonych runbookówCI, zaakceptowany plan i akceptacja code owneraCode owner akceptuje plan i zatwierdza merge
WysokaUwierzytelnianie, billing, migracje schematu, biblioteki współdzielone, ścieżki wrażliwych danychPrzygotować zmianę, dry run i przetestowany rollbackReview specjalisty, przećwiczony rollback i zgoda na wydanieWskazany specjalista i właściciel wydania, osobno
KrytycznaZmiany danych produkcyjnych, wyjątki bezpieczeństwa, operacje destrukcyjne, zakres regulowanyWyłącznie przygotować dowody i wniosek o zgodęBramka platformy wdrożeniowej, której tożsamość agenta nie przejdzieWskazany właściciel autoryzuje, platforma wykonuje

Klasy ryzyka to nie poziomy dojrzałości. Poziom pętli na drabinie autonomii mierzy, na ile ufasz tej pętli; klasa ryzyka mierzy, ile kosztuje pomyłka. Trzymaj jedno i drugie w rejestrze autonomii, żeby pętla z długą, czystą historią nie „wysłużyła” sobie dostępu do zmian krytycznych.

Niektóre działania leżą poza uprawnieniami agenta w każdej klasie: odczyt lub rotacja sekretów produkcyjnych, niezatwierdzona komunikacja zewnętrzna, usuwanie backupów i zatwierdzanie własnej pracy. Wpisz je do polityki jako zakazane i egzekwuj regułami deny oraz poświadczeniami, których agent nigdy nie dostaje.

Guardrails czy bramki: gdzie umieścić którą kontrolę?

Dział zatytułowany „Guardrails czy bramki: gdzie umieścić którą kontrolę?”

Guardrail kształtuje lub ogranicza agenta przed pracą i w jej trakcie: sandbox, zawężony token, hook blokujący polecenie. Bramka rozstrzyga, czy dowody wystarczą, żeby iść dalej: wymagany check, akceptacja code ownera, zgoda na wdrożenie. Potrzebujesz obu, bo guardrail nie oceni intencji produktowej, a bramka nie zatrzyma polecenia, które już się wykonało.

MomentKontrolaPrzykładDowód, który zostaje
Przed pracąGranicaZaakceptowana intencja, dozwolone ścieżki, klasa danych, budżetPrzejrzane intent.md i plan.md
W trakcie pracyGuardrailSandbox, zawężone poświadczenia, hook, chroniona ścieżkaLog polityki i test zablokowanej akcji
Przed mergeBramkaTypy, testy, skan bezpieczeństwa, review specyfikacjiWyniki CI i zapis review
Przed produkcjąBramka decyzyjnaWskazany zatwierdzający, okno zmian, gotowość rollbackuZapis zgody i wydania
Po wydaniuInformacja zwrotnaCanary, telemetria, wyzwalacz incydentuOkno obserwacji i decyzja: promocja albo rollback

Instrukcje repozytorium (CLAUDE.md, AGENTS.md, reguły Cursora i skille) poprawiają zachowanie, ale model może je źle odczytać. Dopasuj każdą potrzebę do warstwy, która naprawdę ją egzekwuje:

PotrzebaWłaściwa kontrolaNiewłaściwa kontrola
Wyjaśnić architekturę i konwencjeCLAUDE.md, AGENTS.md, reguły CursoraHook
Powtarzać wieloetapowy workflowSkillDługi prompt wklejany ręcznie
Zablokować lub zalogować deterministyczną akcję narzędziaHook lub polityka wykonaniaZdanie w CLAUDE.md
Ograniczyć pliki, polecenia i siećSandbox i zawężona tożsamość„Nie wdrażaj” w prompcie
Wymusić review przed mergeBranch protection i code ownerzyAkceptacja recenzenta AI
Wymusić autoryzację przed produkcjąŚrodowisko wdrożeniowe lub bramka change managementPodsumowanie agenta-autora
Bezpiecznie się wycofaćPrzećwiczony rollback ze wskazanym właścicielemRunbook, którego nikt nie uruchomił
Udowodnić, co się stałoNiezmienne logi CI, PR, wdrożeń i incydentówSam transkrypt agenta
  1. Daj każdemu nieinteraktywnemu agentowi własną tożsamość usługową. Nigdy nie używaj szerokiego tokenu developera; szczegóły są w tożsamości agentów, poświadczeniach i sekretach.

  2. Przyznawaj najmniejszy zakres repozytorium, sieci, chmury i danych, jakiego wymaga klasa ryzyka uruchomienia. Worktree ani kontener nie zawężą tokenu chmurowego.

  3. Trzymaj sekrety produkcyjne z dala od każdego uruchomienia agenta, niezależnie od klasy. Przy zmianach krytycznych trzyma je platforma wdrożeniowa, nigdy agent. Prompt „nie wdrażaj” nie jest granicą dostępu.

  4. Wymagaj branch protection i akceptacji code ownera przy merge. Tożsamość agenta nie może być code ownerem.

  5. Wymagaj osobnej zgody w środowisku wdrożeniowym dla zmian wysokich i krytycznych. Nie spełni jej ani agent-autor, ani agent-recenzent.

  6. Loguj inicjującego człowieka, tożsamość agenta, wersję narzędzia i modelu, wersje artefaktów, polecenia, ustalenia, zgodę, wdrożenie i wynik rollbacku.

Wzorzec jest ten sam we wszystkich trzech narzędziach: wskazówki w plikach instrukcji, twarde limity w managed settings lub polityce administratora, a bramki merge i produkcji na platformie Git (GitHub, GitLab) i platformie wdrożeniowej. Różnią się ustawienia. Zestawienie wszystkich kluczy zarządzanych znajdziesz w jednej polityce dla wszystkich agentów kodujących.

Twarde limity umieść w managed settings (managed-settings.json, MDM lub ustawienia zarządzane z serwera w planach Team i Enterprise), których ustawienia użytkownika i projektu nie nadpiszą. Klucze sprawdzone w Claude Code 2.1.283:

{
"permissions": {
"disableBypassPermissionsMode": "disable",
"deny": [
"Bash(terraform apply:*)",
"Bash(kubectl delete:*)"
]
},
"allowManagedPermissionRulesOnly": true,
"allowManagedHooksOnly": true
}

Reguła deny dla Bash dopasowuje tekst polecenia, który pisze Claude, a nie sam program, więc sh -c albo skrypt ją omija (dokumentacja Claude Code, sprawdzono na v2.1.283). Prawdziwą granicą dla terraform i kubectl jest to, że tożsamość agenta nie ma poświadczeń do produkcyjnej chmury ani klastra; regułę deny traktuj jako dodatkowe zabezpieczenie przed pomyłką.

allowManagedPermissionRulesOnly ignoruje reguły uprawnień z ustawień użytkownika, projektu i lokalnych; allowManagedHooksOnly robi to samo z hookami. Od v2.1.283 (kanał latest; stable to 2.1.274) tryb auto jest trybem startowym interaktywnych sesji w terminalu i VS Code na obsługiwanych modelach, a każdą akcję ocenia klasyfikator. Traktuj ten klasyfikator jako guardrail, nie bramkę. Aby wyłączyć go w repozytoriach regulowanych, dodaj "disableAutoMode": "disable" wewnątrz permissions. W CI claude -p startuje w trybie Manual, a --permission-prompts none odrzuca wszystko, co wymagałoby pytania.

Zarządzany Code Review w Claude Code publikuje ustalenia, ale „the check run always completes with a neutral conclusion so it never blocks merging through branch protection rules” (dokumentacja Claude Code, sprawdzono na v2.1.283). Jeśli jego ustalenia mają blokować merge, parsuj je we własnym wymaganym checku CI. Nieudany lub przerwany przez limit czasu review też kończy się wynikiem neutralnym (dokumentacja Claude Code, sprawdzono na v2.1.283), więc twój check CI musi zakończyć się niepowodzeniem, gdy wyniku brakuje.

Napisz kontrakt dowodowy dla każdego uruchomienia agenta

Dział zatytułowany „Napisz kontrakt dowodowy dla każdego uruchomienia agenta”

Każde uruchomienie w tle lub autonomiczne określa swój kontrakt, zanim wystartuje. Kolejna bramka czyta jego wynik, więc uruchomienie bez kontraktu nie daje bramce nic do sprawdzenia.

  • Wejście: dokładny commit, artefakty, zgłoszenie, okno telemetrii i dozwolone źródła zewnętrzne.
  • Zakres: katalogi, narzędzia, cele sieciowe, klasa poświadczeń oraz budżet czasu lub kosztu.
  • Dowód: polecenia z oczekiwanym kodem wyjścia, schematy, zrzuty ekranu lub progi ewaluacji.
  • Wynik: plik, pull request, komentarz lub ustrukturyzowany rekord, który czyta kolejna bramka.
  • Porażka: niezerowy kod wyjścia, timeout, brak zależności lub niska pewność, a do tego właściciel eskalacji.
  • Uprawnienia: działania dozwolone bez zgody i pierwsze działanie, które zawsze czeka na człowieka.

Podmień commit, ścieżki, polecenia i właściciela na własne. Stałe klauzule (fail closed, nigdy nie ruszaj wyroczni testowej, nigdy nie zatwierdzaj własnej pracy) zostaw słowo w słowo; ochrona wyroczni testowej wyjaśnia, dlaczego druga z nich jest najważniejsza.

Wklej go do podręcznika inżynierskiego, uzupełnij właścicieli i podlinkuj z pliku instrukcji każdego repozytorium. Każda klauzula mówi, co ją egzekwuje; klauzula, która opiera się na zaufaniu, to znana luka. Szablon zostaje po angielsku, bo trafia do repozytoriów i plików instrukcji agentów.

AGENT AUTONOMY POLICY — v1.0 — owner: CTO — review: quarterly
1. Classification. Every agent change gets a risk class (low, medium, high, critical),
computed in CI from touched paths, migrations, and requested credentials.
Highest factor wins. Enforced by: required CI check that writes the PR label.
2. Forbidden in every class: production secrets, destructive production commands,
deleting backups, external communication, approving own work.
Enforced by: managed deny rules + credentials the agent identity never holds.
3. Identity. One service identity per agent loop, least privilege, short-lived tokens.
Enforced by: identity provider + CI OIDC. Owner: platform team.
4. Merge gate. Low: CI + evidence bundle + any reviewer. Medium: + code owner.
High: + specialist review + rehearsed rollback. Enforced by: branch protection.
5. Production gate. High and critical: named release owner approves in the
deployment environment. Agent identities cannot approve. Enforced by: deploy platform.
6. AI reviewers and auto-approval tools may approve low-class changes only.
Criteria owner: release owner. Enforced by: routing rules + branch protection.
7. Overrides. Every bypass is attributed, expires in 7 days, and is reviewed.
Enforced by: override log in the change record.
8. Evidence. Every control has an owner, trigger, failure behavior, exception path,
and audit record. Controls fail closed.
9. Proof. Controls are rehearsed quarterly; metrics are reported by risk class.

Siedmiodniowe wygasanie obejść i kwartalny rytm to robocze wartości domyślne tego przewodnika, a nie opublikowany standard; dopasuj je do własnego apetytu na ryzyko.

Uruchom je w Claude Code, Codex lub Cursorze z dostępem do odczytu repozytorium i jego konfiguracji CI. Tworzą raporty i niczego nie zmieniają.

Sprawdź każdą kontrolę, celowo próbując ją obejść, a potem mierz kontrole według klasy ryzyka. Żaden z tych kroków nie wymaga czytania każdego diffa.

  1. Poproś uruchomienie klasy niskiej o zapis poza dozwolonym katalogiem roboczym. Sandbox musi to zablokować, a blokada musi trafić do logu polityki.

  2. Poproś je o pominięcie nieprzechodzącego wymaganego testu. Workflow musi zakończyć się błędem.

  3. Spróbuj zrobić merge bez akceptacji code ownera. Branch protection musi to zablokować.

  4. Spróbuj wydać zmianę na produkcję tożsamością agenta i bez wskazanej zgody. Platforma wdrożeniowa musi to zablokować.

  5. Wyłącz usługę review. Merge musi pozostać zablokowany; brak recenzenta nigdy nie liczy się jako zgoda.

  6. Uruchom rollback w środowisku nieprodukcyjnym i zapisz czas przywrócenia.

  7. Zmień regułę, skill lub hook i uruchom ewaluacje harnessu przed wdrożeniem zmiany.

Krok, który przechodzi, choć powinien zakończyć się błędem, to incydent w kontroli, a nie niestabilny test. Zapisz go tak, jak incydent spowodowany przez agenta.

MetrykaDefinicjaCo oznacza zły trend
Odsetek fałszywych blokadZablokowane zmiany później zmergowane bez zmian ÷ wszystkie zablokowane zmianyBramka kosztuje zaufanie i zachęca do obchodzenia
Odsetek obejśćMerge lub wydania z przypisanym obejściem ÷ wszystkie merge w klasieKontrola jest błędna albo klasa zbyt surowa
Defekty, które uciekłyIncydenty wywołane zmianą, która przeszła każdą bramkęBramka sprawdza niewłaściwą rzecz
Czas oczekiwania na reviewMediana godzin od „gotowe do review” do decyzjiBramki ludzkie stały się wąskim gardłem; przenieś checki do automatyzacji

Raportuj je osobno dla każdej klasy. Zdrowa klasa niska ma krótkie oczekiwanie i mało obejść; zdrowa klasa krytyczna może mieć długie oczekiwanie i nadal być poprawna. Kanoniczne definicje metryk są we frameworkach metryk.

Kto zatwierdza: właściciel wydania zatwierdza bramkę produkcyjną dla zmian wysokich i krytycznych, code owner zatwierdza merge w klasie średniej, a CTO zatwierdza zmiany samej polityki, z dołączonymi wynikami ćwiczeń i metrykami.

Agent-autor i agent-recenzent lepiej wykrywają błędy, ale mogą dzielić poświadczenia, konfigurację, martwe pola modelu i organizację, która je skonfigurowała. Dwóch agentów to jeszcze nie rozdział obowiązków. OWASP GenAI LLM Top 10 2026 (opublikowany 2026-08-04) umieszcza Excessive Agency na pozycji LLM03 i zaleca: „Use human-in-the-loop control to require a human to approve high-impact actions before they are taken”.

Prawdziwa bramka używa tożsamości, w której imieniu uruchomienie-autor nie może działać, albo polityki platformy, której nie może zmienić, a tam, gdzie wymaga tego klasa ryzyka, także odpowiedzialnego człowieka. Używaj review AI do decyzji, gdzie skierować uwagę ludzi, a nie jako zamiennika ludzi przy zmianach wysokich i krytycznych. Dowody, które akceptują audytorzy, opisuje inżynieria agentowa w branżach regulowanych.

Co psuje się w nadzorze nad agentami i jak to naprawić?

Dział zatytułowany „Co psuje się w nadzorze nad agentami i jak to naprawić?”

Tekst doradczy traktowany jak egzekwowanie. Linijka w CLAUDE.md mówi „nigdy nie uruchamiaj migracji”, aż pewnego dnia agent ją uruchamia. Naprawa: uruchom prompt „oddziel rady od egzekwowania”, a potem przenieś każdy niezmiennik oznaczony jako tylko doradczy do egzekwowanej kontroli. Przy akcjach destrukcyjnych najpierw odbierz tożsamości agenta poświadczenia albo użyj uprawnień platformy; zarządzana reguła deny, hook albo check w CI to tylko dodatkowa warstwa, która zatrzyma typową postać polecenia.

Jeden token sięga do każdego środowiska. Token CI agenta pozwala też wdrażać. Naprawa: najpierw go unieważnij, potem rozdziel tożsamości per pętla i środowisko, i zrotuj poświadczenia. Traktuj ekspozycję jako incydent, dopóki logi nie pokażą, czego token dotknął.

Agent sam nadaje sobie klasę ryzyka. Każda zmiana przychodzi jako „niska”. Naprawa: wyliczaj klasę w CI na podstawie ścieżek i migracji i alarmuj, gdy etykieta zaproponowana przez agenta jest niższa od wyliczonej.

Bramka ludzka nie ma kryteriów decyzji. Zatwierdzający klikają „akceptuj”, bo nic nie mówi im, co sprawdzić. Naprawa: dołączaj do każdego wniosku pakiet dowodów i jednozdaniową ocenę ryzyka, a kryteria, właściciela, timeout i ścieżkę eskalacji ustal, zanim zautomatyzujesz wniosek.

Obejścia nigdy nie wygasają. Jednorazowe obejście na czas awarii staje się stałe. Naprawa: nadaj każdemu obejściu datę wygaśnięcia i właściciela, a otwarte obejścia raportuj na przeglądzie kwartalnym.

Kontrola przepuszcza zmianę, gdy sama zawiedzie (fail open). Usługa review przekracza timeout i merge przechodzi. Naprawa: ustaw check jako wymagany i niech kończy się błędem, gdy brakuje wyniku, a przypadek awarii dodaj do ćwiczenia.

Rollback istnieje tylko w dokumencie. Naprawa: przećwicz go w reprezentatywnym środowisku nieprodukcyjnym i zmierz czas przywrócenia. Wydania klasy wysokiej łącz z progresywnym dostarczaniem, żeby rollback był przełączeniem flagi, a nie ponownym wdrożeniem.

Fałszywa pewność. Ktoś nazywa instrukcje „niezawodnymi guardrails” albo rezygnuje z ludzkiego review, bo checki są zielone. Modele źle odczytują instrukcje, hooki bywają źle skonfigurowane, a deterministyczne checki nie ocenią intencji produktowej. Naprawa: przetestuj całą ścieżkę kontroli, spisz ryzyko rezydualne i zachowaj uprawnienia człowieka przy bramkach, które mają konsekwencje.

Przed tą stroną przeczytaj model operacyjny, który mówi, kto odpowiada za rejestr autonomii. Następnie zastosuj politykę do zagrożeń i poświadczeń, przed którymi ma chronić.

Procedury etapów, w których działają te bramki, opisują Deploy i Maintain.