Indexul jurnaluluiDockup / notă de teren
Note / production-guardrails-for-ai-agents

Guardrails de producție pentru agenți AI, concepute pentru autonomie sigură

Guardrails de producție pentru agenți AI: protejarea secretelor, confirmări, audit logs, acces limitat, erori structurate și workflows sigure pentru deployment autonom.

Guardrails de producție pentru agenți AI trebuie să reziste la mai mult decât un prompt politicos. Un agent autonom de coding poate interpreta greșit o țintă, poate reîncerca o operațiune, poate expune un credential în explicații sau poate continua după un răspuns ambiguu. Prin urmare, siguranța în producție trebuie să existe în interfața executabilă, în modelul de autorizare și în audit trail — nu doar în instrucțiuni.

Dockup combină îndrumarea comportamentală din skill-ul său pentru Claude Code și Codex cu enforcement la nivel de CLI: secretele sunt mascate, operațiunile distructive necesită --yes, erorile returnează coduri stabile, deploy-urile pot aștepta o stare terminală, iar mutațiile apar în audit log.

De ce trebuie impuse guardrails sub nivelul promptului?

Un prompt este o politică utilă, dar nu este o security boundary. Contextul agentului poate fi trunchiat, instrucțiunile pot intra în conflict, iar modelul poate alege o interpretare incorectă. Unealta de bază ar trebui să facă un comportament nesigur dificil sau imposibil.

Să luăm ca exemplu o solicitare de ștergere. Designul slab expune o comandă care șterge imediat și se bazează pe faptul că agentul își amintește să ceară confirmare. Designul mai robust respinge operațiunea dacă nu este prezent un flag separat de confirmare.

Dockup folosește modelul mai robust:

dockup up production/api --prune --json

Fără confirmare explicită, operațiunea distructivă de cleanup este refuzată, iar JSON-ul include code:"needs_confirm". Nimic nu este eliminat. Agentul trebuie să prezinte rezultatul unui om, să primească aprobarea și apoi să ruleze intenționat din nou comanda:

dockup up production/api --prune --yes --json

Aceasta este defense in depth. Skill-ul Dockup îi spune agentului să se oprească, iar CLI-ul previne executarea accidentală chiar dacă instrucțiunea este omisă.

Cum protejează mascarea secretelor agenții autonomi?

Agenții includ adesea output-ul comenzilor în raționamentul sau în răspunsul final. Dacă o operațiune de citire returnează un token de producție, secretul se poate răspândi în istoricul conversației, logs, telemetry, capturi de ecran sau notițe copiate despre incidente.

O interfață sigură pentru configurare separă metadata secretelor de valorile acestora. Dockup returnează cheile variabilelor de mediu și markerul isSecret, însă valorile secretelor stocate sunt null sau mascate.

dockup env list -s production/api --json

Agentul poate seta un secret fără să îl poată recupera ulterior:

dockup env set API_KEY="$API_KEY" \
  --secret \
  -s production/api \
  --json

Mascarea secretelor nu elimină nevoia de a gestiona cu atenție procesele. Valoarea originală există în continuare în shell environment în timpul operațiunii de setare. Evită set -x, nu afișa variabila și nu construi command strings care sunt capturate de logging-ul verbose.

Parolele de baze de date, API keys, registry tokens, credentialele SSH și credentialele Windows RDP trebuie tratate ca output-uri one-time sau restricționate. Un agent ar trebui să le stocheze într-un secret manager aprobat sau să le transmită direct următorului proces, fără să le reproducă în text.

Abordarea mai largă la nivel de aplicație este prezentată în best practices pentru securitate.

Cum ar trebui să funcționeze aprobarea acțiunilor distructive?

Nu orice mutație necesită același nivel de formalism. Un model util de autonomie separă operațiunile în funcție de reversibilitate și blast radius:

NivelExempluComportamentul implicit al agentului
Read-onlyListează servicii, citește statusul, afișează logsExecută și rezumă
Write reversibilSetează o variabilă, declanșează un deployExecută în limitele scope-ului aprobat
Recuperare operaționalăRestartează, rulează din nou un deployment mai vechiExecută dacă permite runbook-ul; raportează dovezile
DistructivDistruge un serviciu, șterge o bază de date, părăsește proiectulSe oprește și cere aprobare explicită
Distructiv la scară largăAplică --prune, transferă ownership-ulNecesită confirmare umană specifică țintei

Aprobarea explicită ar trebui să includă ținta exactă și consecința. „Da, continuă” este mai puțin clar decât „Șterge staging/old-api și resursele de servicii asociate”. Agentul nu ar trebui să refolosească aprobarea acordată pentru o altă comandă sau țintă.

Config as code din Dockup este additive by default. dockup up nu va elimina variabilele de mediu sau domeniile absente din manifest. Ștergerea necesită flag-ul explicit --prune:

dockup plan production/api --json
dockup up production/api --prune --json

Planul este read-only și ar trebui verificat mai întâi. Chiar și cu --prune, secretele, serviciile, bazele de date și volumele sunt protejate împotriva acestui flux de cleanup al manifestului. Consultă dockup.yaml config as code pentru workflow-ul complet.

Cum mențin erorile structurate autonomia în limite sigure?

Un agent are nevoie de un set finit de branch-uri sigure. Mesajele free-form sunt utile pentru oameni, dar codurile stabile de eroare fac primul răspuns determinist.

CodRăspuns corect
not_logged_inOprește-te și obține un credential valid
not_linkedRezolvă ținta sau transmite-o explicit
no_targetRulează service discovery; nu inventa niciodată un slug
needs_confirmCere aprobarea unui om
deploy_trigger_failedRaportează motivul pentru care operațiunea nu a putut începe
deploy_failedInspectează build logs
deploy_timeoutRaportează incertitudinea privind starea terminală

Un deployment ar trebui să folosească așteptarea unei stări terminale:

dockup deploy production/api --wait --json

Timeout-ul implicit este de 900 de secunde. Exit-ul 0 demonstrează că deployment-ul a ajuns la succes. Un exit diferit de zero împiedică agentul să continue cu modificări de domeniu, migrations sau announcements ca și cum producția ar fi gata.

Acest design este analizat în designul CLI-ului pentru agenți AI. Principiul este simplu: unealta trebuie să facă explicit un rezultat ambiguu.

Ce ar trebui să înregistreze un audit log?

Autonomia fără atribuirea responsabilității este datorie operațională. Un audit trail de producție ar trebui să răspundă la întrebările: cine a acționat, ce interfață a folosit, ce țintă a fost modificată, dacă a fost o operațiune de citire sau de scriere, când s-a întâmplat și dacă a reușit.

Dockup înregistrează acțiunile din CLI, UI și API. Operatorii pot inspecta mutațiile recente:

dockup audit --writes --json
dockup audit --number 30 --json
dockup audit --search domains --json

Raportul agentului ar trebui să completeze înregistrarea platformei. Include:

  1. Ținta project/service rezolvată.
  2. Categoria comenzii, fără valorile secretelor.
  3. Deployment sau resource IDs returnate de platformă.
  4. Exit code-ul și statusul structurat.
  5. Dovezile colectate după mutație.
  6. Orice aprobare primită pentru acțiuni distructive.
  7. Incertitudinea rămasă sau pașii următori.

Audit logs nu servesc doar pentru stabilirea vinovăției după un incident. Acestea permit unui al doilea agent sau unui operator uman să reconstruiască starea fără să repete comenzi riscante.

Cum își pot crește echipele autonomia agenților în siguranță?

Începe cu acces read-only și un singur serviciu cu risc redus. Extinde accesul doar după ce agentul demonstrează că identifică corect țintele, gestionează secretele în siguranță, tratează corect erorile și raportează rezultatele.

O progresie practică este:

Etapa 1: Observare

Permite listarea serviciilor, statusul, istoricul deployment-urilor, build logs, runtime logs, uptime, usage și citirea rezultatelor scanărilor de securitate. Compară rezumatul agentului cu JSON-ul brut.

Etapa 2: Deployment către o țintă fixă

Permite deployment-ul unui singur serviciu cu --wait. Impune un health check și un raport structurat de finalizare. Nu acorda drepturi de ștergere sau permisiuni de echipă.

Etapa 3: Gestionarea configurației reversibile

Permite actualizarea variabilelor non-secret și secret, configurarea health check-urilor și setarea custom domain-urilor în baza unui runbook verificat. Impune un nou deployment după modificarea environment-ului.

Etapa 4: Executarea acțiunilor de recuperare

Permite restart sau rollback doar când agentul selectează un deployment ID exact și cunoscut și păstrează dovezile erorii.

Etapa 5: Acțiuni distructive condiționate de aprobare

Păstrează flag-urile distructive în spatele aprobării explicite a unui om, chiar și atunci când credentialul le permite tehnic. Folosește API keys cu scope limitat ori de câte ori este posibil și verifică periodic audit trail-ul.

Instalarea skill-ului agentului consolidează aceste comportamente:

npm install -g dockup-cli
dockup skill install
dockup skill status --json

Referința Dockup CLI documentează comportamentul impus al comenzilor. Agentul ar trebui să-și verifice schema locală în loc să se bazeze pe un exemplu reținut.

Checklist pentru verificarea guardrails

Înainte de a acorda acces la producție, răspunde la fiecare întrebare:

  • Poate agentul să descopere ținte exacte fără să ghicească?
  • Sunt valorile secretelor mascate pe toate căile de citire?
  • Returnează fiecare mutație eșuată un exit diferit de zero?
  • Pot operațiunile lungi să aștepte o stare terminală?
  • Sunt acțiunile distructive blocate fără confirmare explicită?
  • Sunt credentialele limitate ca scope și furnizate în afara prompturilor?
  • Poate fi găsită fiecare mutație într-un audit log?
  • Există o procedură testată de rollback sau recuperare?
  • Pot versiunile skill-ului și ale executabilului să ajungă desincronizate?
  • Separă raportul final faptele de incertitudine?

Un răspuns „nu” indică o sarcină de design, nu una de redactare a promptului. Autonomia în producție ar trebui să crească doar pe măsură ce cresc și garanțiile de bază.

Testează guardrails ca scenarii de eroare

O verificare nu este completă până când echipa nu declanșează intenționat limitele. Rulează un deploy cu un token invalid, solicită o țintă necunoscută, lasă un build de test să eșueze, setează un timeout foarte scurt și încearcă o comandă distructivă fără confirmare. Fiecare caz ar trebui să producă un exit diferit de zero, un cod stabil, nicio scurgere de secrete și nicio mutație neintenționată.

Aceste teste transformă guardrails de producție pentru agenți AI în garanții observabile. Repetă-le după actualizări ale CLI-ului sau ale politicilor, așa cum ai repeta testele de autentificare și autorizare pentru o aplicație. Un guardrail care există doar într-o prezentare nu va proteja un release nesupravegheat.

Pune workflow-ul în producție

Instalează skill-ul, inspectează instrucțiunile și testează fiecare guardrail — inclusiv o comandă distructivă blocată — înainte de a emite un token de producție.

npm install -g dockup-cli
dockup skill install

Prima comandă instalează CLI-ul. A doua instalează skill-ul Dockup compatibil cu Claude Code și Codex. Începe gratuit la app.dockup.ai.

Întrebări frecvente

Sunt suficiente instrucțiunile din prompt pentru a menține un agent AI în siguranță în producție?

Nu. Prompturile ajută la ghidarea comportamentului, dar controalele critice, precum mascarea secretelor, confirmarea, autorizarea, exit codes și audit logging, trebuie impuse de unealtă și platformă.

Cum blochează Dockup operațiunile distructive?

Comenzile distructive refuză să ruleze fără flag-ul explicit --yes și returnează codul structurat needs_confirm, permițând agentului să se oprească și să ceară aprobarea unui om.

Poate un agent AI să citească valorile secretelor din environment în Dockup?

Valorile secretelor stocate sunt mascate în output. Agentul poate vedea cheia și markerul secretului și poate înlocui valoarea, dar nu primește secretul stocat.

De ce sunt importante codurile structurate de eroare pentru autonomie?

Acestea limitează agentul la branch-uri cunoscute de recuperare, precum solicitarea autentificării, descoperirea țintei exacte, citirea build logs sau cererea confirmării.

Cum ar trebui să înceapă o echipă să acorde acces la producție?

Începe cu operațiuni read-only, apoi permite deployment-ul către o singură țintă cu risc redus și extinde accesul către configurare reversibilă și acțiuni de recuperare doar după ce agentul raportează constant dovezi verificabile.