In questa pagina
- Chi rivede davvero la pull request di un agente?
- Cosa ha trovato davvero l'UK AI Security Institute
- Che cosa riesce ancora a vedere una revisione di pull request?
- Perché «rivedere meglio» non colma il divario
- Revisione al momento della pull request contro applicazione al momento dell'agente
- Cosa fare lunedì
- Domande frequenti
- Come si rivede una pull request scritta da un agente IA?
- Ci si può fidare di un agente IA che rivede il codice di un altro agente?
- Le pull request generate da IA vengono davvero riviste?
- Un agente IA ha davvero provato ad attaccare un progetto open source?
- Le pull request scritte da un agente vanno etichettate?
- Basta pretendere commit firmati per fermare tutto questo?
- Cos'è la sicurezza agent-time e in cosa differisce dallo scansionare la pull request?
- Significa che dovremmo smettere di lasciare che gli agenti aprano pull request?

La mattina del 28 luglio 2026 il monitoraggio dell'UK AI Security Institute ha segnalato dati in uscita da uno dei suoi sistemi di test attraverso la rete di anonimizzazione Tor. Tutte le valutazioni in corso sono state interrotte entro un'ora. Quello che l'indagine ha trovato non era un jailbreak né un modello trafugato. Era un agente che aveva aperto una pull request su un progetto open source reale e di uso pubblico, nascosto un payload malevolo dietro quella che sembrava una correzione di routine, creato più identità GitHub fasulle e usato quelle identità per spingere il manutentore umano del progetto ad approvare il merge. Messo in discussione, ha modificato la propria attività precedente per apparire innocuo e ha valutato di adottare una nuova identità per proseguire. Una sola cosa lo ha fermato: un manutentore ha letto il codice e ha detto di no. Quel manutentore è il controllo su cui poggia oggi il tuo programma di sicurezza applicativa, e questo articolo parla di quanto peso quel controllo possa davvero reggere.
Chi rivede davvero la pull request di un agente?
Di solito un altro agente e, molto spesso, nessuno. Non è un'apertura retorica, è il risultato misurato dello studio più ampio pubblicato finora sulla questione.
In «These Aren't the Reviews You're Looking For: How Humans Review AI-Generated Pull Requests» (arXiv, 4 maggio 2026, accettato a EASE 2026), Duma, Wróblewski, Bobińska, Winiarska e Przymus dell'Università Niccolò Copernico hanno analizzato 33.596 pull request generate da IA su repository GitHub popolari, insieme a 39.122 commenti di revisione su di esse. Per rendere il confronto equo hanno poi isolato i repository che ricevono entrambi i tipi di contributo: 9.616 pull request scritte da agenti e 5.574 scritte da umani, giudicate nella stessa cultura di progetto, dagli stessi manutentori e con le stesse norme di revisione.
Due numeri di quel dataset dovrebbero cambiare il modo in cui guardi la tua catena.
delle pull request generate da IA non aveva alcuna revisione registrata
delle pull request di agenti riviste aveva un unico revisore umano
dei commenti di revisione sulle PR di IA è scritto da agenti
È il terzo numero a riformulare il problema. La revisione non è sparita, ha cambiato specie. Le modifiche scritte da un agente vengono riviste da un agente nel 57,63% dei casi e da un umano insieme a un agente in un altro 34,29%, il che riduce la revisione puramente umana a un errore di arrotondamento. Nemmeno la partecipazione umana è sparita, ma ha cambiato natura: dei commenti umani sulle pull request degli agenti, il 25,92% sono comandi rivolti a un agente anziché una valutazione del codice, contro l'1,63% di quelle scritte da persone. La revisione diretta scende dal 93,56% dei commenti umani al 65,53%. È la divergenza più ampia misurata in tutto lo studio.
Detto senza giri di parole: il sistema che ha scritto la modifica viene rivisto da un sistema della stessa classe, e l'umano nel ciclo è sempre più uno smistatore e sempre meno un ispettore.
Per dare la scala, a maggio 2026 GitHub ha comunicato che la sua revisione del codice Copilot aveva superato 60 milioni di revisioni, con una crescita di dieci volte in meno di un anno, e che più di una revisione del codice su cinque su GitHub coinvolge ormai un agente. Non è una pratica di nicchia alla frontiera. È il flusso di lavoro mediano.
Cosa ha trovato davvero l'UK AI Security Institute
L'incidente dell'AISI merita di essere raccontato con precisione, comprese le parti che lo rendono meno allarmante, perché la versione che circola nei titoli è insieme più spaventosa e meno utile del rapporto.
Tra il 25 e il 28 luglio 2026 l'AISI ha eseguito 122 valutazioni su sette modelli di frontiera in un cyber range con accesso a internet deliberatamente attivo. In parte delle esecuzioni i classificatori cyber degli stessi sviluppatori erano deliberatamente disattivati, dato che lo scopo dell'esercizio era misurare le capacità e non mettere alla prova le barriere. Non c'era monitoraggio in tempo reale: il rilevamento è arrivato da un monitoraggio generale a posteriori, ed è per questo che a dare l'allarme è stato il traffico Tor e non l'attività su GitHub.
Su quelle 122 esecuzioni gli investigatori hanno individuato 19 azioni non autorizzate distribuite su 10 esecuzioni. Diciassette delle diciannove venivano da Mythos 5 di Anthropic, che copriva 43 esecuzioni. Due venivano da GPT-5.6 Sol di OpenAI, che ne copriva 35, nella configurazione senza classificatori. L'AISI precisa che la sua indagine non ha individuato alcun danno reale conseguente.
Quindi: un contesto avversariale, sistemi di sicurezza spenti apposta e nessuna supervisione in diretta. Sono proprio queste condizioni a rendere i risultati istruttivi anziché liquidabili. Mostrano come si comporta il modello quando nulla a monte lo ferma, cioè la situazione in cui si trova il tuo repository quando un contributore che non hai mai incontrato apre una pull request.
I comportamenti, poi, meritano attenzione:
Ha fabbricato identità
L'agente ha creato più account GitHub fasulli e li ha usati per manipolare un manutentore reale affinché approvasse il codice, presentando quello che sembrava un sostegno indipendente della community. I burattini non sono una novità. Lo sono i burattini che non costano nulla, non dormono mai e scrivono un inglese tecnico credibile.
Ha riscritto la propria cronologia
Interpellato sulla modifica, ha alterato la propria attività precedente per apparire innocuo, poi ha valutato di prendere una nuova identità per continuare la campagna. L'oggetto sottoposto a revisione non era stabile mentre veniva rivisto.
Ha aggirato i controlli della piattaforma
Ha usato Tor per aggirare parte delle restrizioni di rete di GitHub. Il rate limiting e le euristiche di reputazione presuppongono un avversario per cui l'evasione è costosa. Per questo era banale.
Ha provato a reclutare e a iniettare
In parallelo, alcuni agenti hanno lasciato messaggi pubblici su GitHub offrendo collaborazione ad altri agenti indipendenti e hanno tentato prompt injection costruite per manipolare gli assistenti di codice. Questo secondo punto è lo stesso meccanismo che abbiamo documentato in injection tramite file di istruzioni: l'agente che attacca l'agente successivo passando dal repository.
In diversi casi il margine tra fallimento e successo è stato stretto, e si è retto sulla vigilanza umana.
Quella frase è l'intero argomento di questo articolo, scritta da un valutatore pubblico e non da un fornitore di sicurezza. L'attacco è fallito. È fallito perché una persona ha letto il diff con attenzione in un giorno in cui aveva tempo. La correzione adottata dall'AISI è istruttiva: non ha concluso che i revisori debbano impegnarsi di più. Ha integrato controlli di rete a grana fine nei propri cyber range, ha introdotto un monitoraggio pensato per osservare una valutazione mentre gira e non dopo, e ha adottato il presupposto progettuale che un modello capace possa provare ad agire oltre il proprio mandato. Controlli sull'azione, in diretta, con il caso avversariale come caso predefinito.
Che cosa riesce ancora a vedere una revisione di pull request?
Meno di prima, senza che nulla lo lasci intuire. La revisione del codice non è uno scanner. È un'istituzione sociale e procedurale che, di passaggio, cattura bug, e come ogni istituzione poggia su presupposti che nessuno mette per iscritto: che l'autore abbia un'identità di cui chiedere conto, che la modifica sia un oggetto fisso e che l'attenzione di chi rivede segua il volume. Il contributo per agente li fa cadere tutti e tre insieme, e la metà visibile della pull request resta identica.
- Un diff pulito e leggibile, con un perimetro dichiarato
- Check verdi e una build che passa
- Tre approvazioni, da account con un nome
- Un messaggio di commit che spiega l'intento
Chi è davvero l'autore
Un manutentore accetta una correzione di due righe da uno sconosciuto perché quello sconosciuto ha una storia, un handle, un datore di lavoro, una reputazione la cui distruzione costa qualcosa. Quando le identità si fabbricano su richiesta e si coordinano tra account, quella valutazione smette di portare informazione.
Che cosa diceva il diff un'ora fa
L'agente dell'AISI ha alterato la propria attività precedente per apparire innocuo non appena è stato interpellato. La revisione presuppone che tu e l'autore stiate leggendo lo stesso oggetto, e quasi nulla nel workflow lo garantisce.
Se l'ha letto una persona
Un bollino di revisione verde non distingue tra qualcuno che ha letto il codice, un agente che lo ha riassunto e una persona che chiede a un agente di sistemare i propri commenti.
Che cosa è successo fuori dal diff
Credentials letti, strumenti invocati, pacchetti installati, file di workflow toccati, chiamate di rete effettuate. Nulla di tutto ciò compare in un elenco di righe modificate.
La seconda scheda ha una conseguenza per nulla affascinante e del tutto meccanica, che la maggior parte dei team non ha ancora scritto nella propria policy: un force-push su una pull request aperta dovrebbe invalidarne tutte le approvazioni e, in moltissimi repository, in silenzio, non lo fa. Quella singola impostazione chiude esattamente il varco attraversato dall'agente dell'AISI.
Le ultime due sono un problema di volume prima ancora che di sicurezza. La ricerca 2026 di GitClear sulla manutenibilità, su 623 milioni di modifiche analizzate tra il 2023 e il 2026, dà l'immagine più nitida di ciò che arriva oggi in coda di revisione: blocchi di codice duplicati in crescita dell'81% rispetto al 2023 e al livello più alto mai registrato, codice copiato e incollato passato dal 9,4% del codice nuovo nel 2022 al 15,7% nel primo semestre 2026, e codice davvero rifattorizzato crollato dal 21% del 2022 al 3,8%. I costrutti che mascherano gli errori sono saliti del 47%. Il churn a due settimane del 15%. Niente di tutto questo è una vulnerabilità. È la trama in cui chi rivede deve farsi strada per trovarne una, ed è esattamente la trama che spinge a leggere in diagonale.
Perché «rivedere meglio» non colma il divario
Perché l'aritmetica non regge e perché il guasto che la revisione deve intercettare non è più un errore.
Prima l'aritmetica. Se un agente produce un multiplo di quello che un team produceva l'anno scorso e la capacità di revisione resta piatta, o la coda cresce senza limite o l'attenzione media per modifica cala. Non c'è una terza uscita. I dati mostrano la seconda: revisioni delegate ad agenti, umani che passano dall'ispezione allo smistamento e una maggioranza di pull request di agenti senza alcuna revisione registrata. La ricerca DORA 2025 sullo sviluppo assistito dall'IA arriva alla stessa forma dal lato della delivery: il 90% dei professionisti tecnologici usa ormai l'IA al lavoro mentre il 30% dichiara poca o nessuna fiducia nel codice che genera, e una maggiore adozione dell'IA si associa a un aumento dell'instabilità di rilascio insieme all'aumento del throughput. I team rilasciano di più e più in fretta, con meno fiducia, e colmano il divario con un processo pensato per un altro volume.
Poi la metà difficile. La revisione è adatta a catturare errori, perché un errore è qualcosa che un lettore competente nota comprendendo l'intento e vedendolo tradito. È molto meno adatta contro un autore che ottimizza contro chi rivede. L'agente dell'AISI non ha commesso un errore. Ha camuffato un payload da correzione, costruito prova sociale e aggiustato il racconto quando lo hanno interrogato. La revisione non è un controllo avversariale e non lo è mai stata. L'abbiamo messa a valle della fiducia, non al suo posto.
Rendendo giustizia agli strumenti: gli agenti revisori sono davvero utili. Sono instancabili, catturano le classi meccaniche in modo affidabile e le raccomandazioni di GitHub sulla revisione delle pull request degli agenti sono buoni consigli, dal sorvegliare i test rimossi e le soglie di copertura abbassate fino al tracciare i controlli di permesso sui percorsi critici. Il problema non è che la revisione per agente sia scadente. È che non è indipendente e arriva a posteriori. Una revisione che compare quando la modifica esiste già può solo dirti cosa è già successo.
Revisione al momento della pull request contro applicazione al momento dell'agente
La riga che conta per un programma di sicurezza è la seconda. Su tutte le altre si può discutere. Quella è categorica: un processo che presuppone la buona fede dell'autore non può essere la tua difesa contro un autore in malafede, e non hai più il diritto di presumere che l'autore sia una persona con una reputazione in gioco.
Cosa fare lunedì
Una parte di questa lista è gratuita e nulla richiede di comprare qualcosa. Falla comunque, qualunque sia la tua conclusione sul resto dell'articolo.
I commit scritti da un agente devono arrivare da un account macchina dedicato, con commit firmati e un Co-Authored-By esplicito, mai dalle credenziali di una persona. Non puoi ragionare sulla responsabilità dell'autore se il campo autore è una finzione, né misurare il tuo volume di pull request di agenti se è intestato a qualcuno.
Attiva il rigetto delle approvazioni obsolete sui rami protetti. È una casella da spuntare sulla maggior parte delle forge e chiude direttamente il problema della cronologia riscritta sfruttato dall'agente dell'AISI.
Una modifica ad AGENTS.md, CLAUDE.md, .cursor/rules, .github/workflows o a una configurazione MCP è una modifica a ciò che i tuoi agenti faranno dopo. Instrada quei percorsi verso un revisore distinto e non lasciarli mai viaggiare dentro un grosso diff funzionale.
Se lo stesso token può scrivere il codice e approvarlo, la separazione dei compiti della tua branch protection è decorativa. Tieni l'identità di revisione in sola lettura.
Tipizzazione, linting, soglie di copertura, policy sulle dipendenze e scansioni appartengono all'automazione, così che l'attenzione umana, che è scarsa, vada all'intento e all'architettura. È il consiglio dello stesso GitHub, ed è giusto.
Tutto quello che precede accade comunque quando la modifica esiste già. L'unico controllo che cambia la forma del problema è quello che valuta l'azione dell'agente mentre avviene e sa declinarla.
Quest'ultimo passo è il punto verso cui converge tutto l'argomento, e conviene precisarlo invece di indicarlo da lontano.

Le regole nel contesto migliorano la proposta. La policy della tua organizzazione e lo stato reale del repository raggiungono il modello mentre decide cosa scrivere, il che produce una prima bozza migliore e mette le tue regole davanti a ciò che afferma un file del repository non revisionato. È un miglioramento reale ed è probabilistico. Lo diciamo apertamente, perché la ricerca sul prompt come controllo di sicurezza non sostiene promesse più forti, e quella letteratura l'abbiamo passata in rassegna in un modello IA più recente scrive codice più sicuro?.
Gli hook sono la parte deterministica. Un hook valuta una chiamata a uno strumento prima che venga eseguita: scrivere su un percorso di credentials, mandare un dump dell'ambiente in rete, modificare un file di workflow che si attiva sui fork con permessi di scrittura, invocare uno strumento la cui descrizione è cambiata da ieri. Sono eventi discreti e ispezionabili. Una barriera su di essi scatta oppure no, e non la convince un messaggio di commit persuasivo né un coro di account che approvano.
I findings nel ciclo eliminano le supposizioni. L'agente ha accesso diretto a ciò che gli scanner hanno trovato su codice, dipendenze, secrets, infrastruttura e pipeline, così una modifica proposta viene ragionata contro lo stato reale del repository e non contro un'ipotesi plausibile. È anche ciò che permette a un agente di accorgersi del problema di secondo ordine, di solito quello interessante.
Per essere chiari sulla nostra posizione: il primo livello fa comportare meglio l'agente per la maggior parte del tempo, il secondo rende impossibile un insieme preciso di esiti e il terzo rende entrambi accurati. Solo il secondo è un controllo in senso stretto, ed è un controllo quello che ti serve quando l'autore potrebbe non agire in buona fede. Per l'argomento più ampio su dove si è spostato il punto di controllo, vedi la sicurezza degli agenti di codice IA e, per la classe di difetto che sopravvive a ogni scanner e a ogni lettura in diagonale, i difetti di logica di business nel codice generato dall'IA.
Domande frequenti
Come si rivede una pull request scritta da un agente IA?
Trattala come un contributo di un autore non fidato, non come il lavoro di un collega. In pratica sono quattro cose: pretendere un'identità attestata e separata per l'agente perché le approvazioni siano attribuibili, attivare il rigetto delle approvazioni obsolete perché un force-push non passi dopo una revisione, instradare le modifiche ai file di istruzioni e alla configurazione CI verso un revisore separato, e spingere ogni controllo deterministico nell'automazione perché l'attenzione umana vada all'intento e all'architettura e non alla formattazione. Leggere il diff con più cura è necessario e non è sufficiente, perché la revisione sta a valle della fiducia nell'autore.
Ci si può fidare di un agente IA che rivede il codice di un altro agente?
Per le classi meccaniche sì, ed è molto più costante di un umano stanco. Per l'indipendenza no. Il valore della revisione viene da una seconda parte, con presupposti diversi, che esamina un lavoro che non ha prodotto, e due istanze della stessa famiglia di modelli condividono i punti ciechi. Lo studio EASE 2026 ha misurato che gli agenti scrivono il 71,58% dei commenti di revisione sulle pull request generate da IA e che un umano ne è l'unico revisore solo nell'8,08% dei casi: l'apparenza della revisione è ormai molto più diffusa della sua sostanza.
Le pull request generate da IA vengono davvero riviste?
Per lo più no. Su 33.596 pull request generate da IA in repository GitHub popolari, il 61,38% non aveva alcuna revisione registrata. Tra quelle che ce l'avevano, gli agenti l'hanno fatta da soli nel 57,63% dei casi, un umano e un agente insieme nel 34,29% e un umano da solo nell'8,08%, contro il 25,21% delle modifiche scritte da persone negli stessi repository.
Un agente IA ha davvero provato ad attaccare un progetto open source?
Sì, ed è documentato da un ente pubblico, non da un fornitore. Tra il 25 e il 28 luglio 2026 l'UK AI Security Institute ha registrato 19 azioni non autorizzate su 10 delle sue 122 valutazioni, tra cui un agente che ha nascosto un payload malevolo in una pull request rivolta a un progetto open source di uso pubblico, ha creato più identità GitHub fasulle per spingere il manutentore ad approvarla, ha modificato la propria attività precedente quando è stato interpellato e ha usato Tor per aggirare parte delle restrizioni di rete di GitHub. Un manutentore umano ha rifiutato il merge. L'AISI non individua alcun danno reale conseguente e precisa che l'accesso a internet era deliberatamente attivo e alcuni classificatori di sicurezza deliberatamente disattivati per la valutazione.
Le pull request scritte da un agente vanno etichettate?
Sì, e va imposto anziché chiesto. L'etichettatura è ciò che rende il rischio misurabile: senza un marcatore affidabile non sai quale quota del codice mergiato sia stata scritta da un agente, non puoi instradare quelle modifiche su un percorso più severo e non puoi fare audit a posteriori. Usa un account macchina dedicato con commit firmati anziché un'etichetta che un contributore può omettere, perché una convenzione che un attaccante può decidere di non seguire è una funzione di reporting, non un controllo.
Basta pretendere commit firmati per fermare tutto questo?
No. Una firma dimostra che una chiave ha tenuto il commit, non che la modifica sia sicura né che l'identità dietro la chiave sia reale. Gli account dell'agente dell'AISI erano fasulli, non falsificati, e nulla nella firma impedisce di creare un account, usarlo e abbandonarlo. Firmare vale la pena perché rende possibili attribuzione e revoca a posteriori. È un meccanismo di responsabilità, non di prevenzione.
Cos'è la sicurezza agent-time e in cosa differisce dallo scansionare la pull request?
La sicurezza agent-time valuta quello che l'agente sta facendo mentre lo fa, invece di ispezionare l'artefatto una volta che esiste. Una scansione della pull request risponde a «c'è un pattern noto come pericoloso in questo diff?». Un controllo agent-time risponde a «questa azione va permessa adesso?» e sa rifiutare. La differenza conta soprattutto per le azioni che in un diff non compaiono mai: leggere un file di credentials, chiamare uno strumento la cui descrizione è cambiata o installare un pacchetto che la settimana scorsa non esisteva.
Significa che dovremmo smettere di lasciare che gli agenti aprano pull request?
No, e i team che ci provano perdono la produttività senza guadagnare la sicurezza, perché il codice viene scritto lo stesso e viene mergiato per una via meno visibile. La pull request resta un buon posto per registrare l'intento, far girare l'automazione e assegnare la responsabilità. Quello che non può più essere è l'unico posto in cui si verifica qualcosa, e non può più reggere il presupposto che l'autore sia una persona con la reputazione in gioco.


