Un agente AI incaricato di consultare un sito Web può trasmettere informazioni personali dell’utente senza che quest’ultimo le abbia inserite nella richiesta. Non occorre che il sito sia compromesso o che qualcuno abbia rubato le credenziali: può essere lo stesso assistente digitale a includere dati riservati nelle comunicazioni HTTP.
È quanto emerge da una segnalazione pubblicata il 5 novembre 2026 nel repository GitHub di Claude Code, lo strumento di programmazione assistita sviluppato da Anthropic. Uno sviluppatore denuncia l’inserimento del proprio indirizzo email nell’header HTTP User-Agent durante richieste verso siti esterni.
L’autore sostiene inoltre di aver iniziato a ricevere numerose email fraudolente, ma non esistono elementi pubblici sufficienti per dimostrare un collegamento causale tra le richieste HTTP e lo spam ricevuto.
La questione supera il singolo episodio: quali informazioni trasmettono gli agenti AI quando navigano sul Web e come possiamo controllarle?
Perché Claude Code può comunicare l’indirizzo email dell’utente
Ogni query HTTP contiene intestazioni o header che descrivono il client, il contenuto richiesto e le modalità di comunicazione. Il campo User-Agent, ad esempio, condivide con il server web remoto informazioni sul software utilizzato lato client:
GET /api/data HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: application/json
Un agente AI capace di eseguire comandi può costruire autonomamente richieste HTTP attraverso curl, Python o librerie JavaScript, decidendo quali intestazioni inserire.
Alcuni servizi, come le API EDGAR della SEC statunitense, richiedono ai bot (client automatizzati) un’identificazione: un agente AI può interpretare tale requisito come un’autorizzazione a utilizzare l’email personale associata all’account.
Una segnalazione del 24 ottobre 2026 descrive nove richieste HTTP effettuate da tre sottoagenti Claude Code verso sec.gov, con l’indirizzo email dell’utente nell’header User-Agent, nonostante istruzioni esplicite che ne vietavano la divulgazione. Un’altra testimonianza di pochi giorni dopo documenta 15 richieste analoghe distribuite su quattro progetti: il modello AI avrebbe privilegiato il completamento dell’attività rispetto alla protezione dei dati personali.
Quali informazioni personali possono finire nelle richieste HTTP
Il rischio non riguarda esclusivamente User-Agent: un agente può includere informazioni personali nei parametri degli URL, nelle strutture in formato JSON trasmesse alle API o all’interno di intestazioni personalizzate.
Campi come Referer, Authorization e Cookie possono inoltre trasportare indirizzi di provenienza, credenziali o identificativi di sessione, a seconda dell’applicazione e delle richieste effettuate.
Va inoltre fatta una distinzione tra le informazioni trasmesse automaticamente dal client da quelle che il modello decide autonomamente di aggiungere nelle richieste ai sistemi remoti: la disponibilità di un dato nelle istruzioni o nella memoria operativa dell’agente non dovrebbe infatti autorizzarne la comunicazione a terzi.
Il problema interessa potenzialmente anche gli strumenti collegati mediante Model Context Protocol (MCP): alcuni server MCP effettuano richieste HTTP attraverso processi separati, che potrebbero sfuggire ai controlli applicati direttamente sull’agente.
Come verificare gli header HTTP trasmessi da un agente AI
Possiamo realizzare un semplice server HTTP locale che registri le intestazioni ricevute. Il test funziona su Windows, Linux e macOS, senza inviare informazioni a servizi esterni. A patto di aver già installato Python, creiamo un file http_audit.py contenente il seguente codice:
from http.server import BaseHTTPRequestHandler, HTTPServer
class AuditHandler(BaseHTTPRequestHandler):
def do_GET(self):
print("\n--- RICHIESTA HTTP ---")
print("Percorso:", self.path)
print(self.headers)
self.send_response(200)
self.end_headers()
self.wfile.write(b"HTTP audit OK")
HTTPServer(("127.0.0.1", 8765), AuditHandler).serve_forever()
Avviamo quindi il server con il seguente comando:
python http_audit.py
A questo punto, possiamo aprire un secondo terminale e digitare il comando curl di seguito:
curl -A "TestAgent/1.0" http://127.0.0.1:8765/
Il server mostrerà una richiesta simile alla seguente:
GET / HTTP/1.1
Host: 127.0.0.1:8765
User-Agent: TestAgent/1.0
Accept: */*
Verificare in pratica il comportamento dell’agente AI
Adesso che abbiamo predisposto il nostro “trappolone“, possiamo chiedere a Claude Code o a un altro agente con accesso al terminale, di visitare l’indirizzo http://127.0.0.1:8765/ utilizzando il client HTTP che ritiene opportuno, senza aggiungere identificativi personali.
Possiamo quindi esaminare con cura la richiesta effettivamente ricevuta dal server, non soltanto la spiegazione successiva fornita dal modello.
Questo genere di test permette di individuare intestazioni inattese anche se non riproduce automaticamente le condizioni osservate nelle segnalazioni GitHub. Alcuni agenti, inoltre, operano in ambienti remoti che non possono raggiungere il nostro indirizzo locale: in questo caso, la prova potrebbe essere fatta semplicemente approntando il server Python su una macchina cloud o un sistema raggiungibile dalla rete Internet, attraverso un indirizzo IP pubblico.
Come analizzare le connessioni HTTPS degli agenti AI con mitmproxy
Per verificare le comunicazioni verso i servizi esterni possiamo utilizzare mitmproxy, un proxy open source capace di intercettare e analizzare richieste HTTP e HTTPS.
Dopo l’installazione del programma, avviamo l’interfaccia Web semplicemente digitando mitmweb. Il proxy ascolta le richieste sulla porta 8080: configuriamo l’applicazione affinché utilizzi 127.0.0.1:8080.
Per ispezionare il contenuto HTTPS occorre configurare il certificato locale del proxy, seguendo la documentazione ufficiale. Una volta instradato il traffico, possiamo esaminare header, URL e contenuti delle richieste. L’intercettazione HTTPS deve avvenire esclusivamente in ambienti controllati, evitando di conservare credenziali e token nei log.
Claude Code ha già introdotto una protezione?
Anthropic ha aggiunto nella versione 2.1.317 di Claude Code un controllo che richiede conferma prima che una chiamata Web o shell trasmetta l’indirizzo email dell’account.
La protezione, associata al componente integrato cc-plugin-privacy, interviene sulle chiamate agli strumenti. Una segnalazione successiva descrive anche dei falsi positivi: il controllo può bloccare operazioni locali che contengono l’indirizzo email pur senza trasmetterlo su Internet.
L’aggiornamento è quindi importante, ma non sostituisce la supervisione delle richieste, la limitazione dei permessi di rete e la separazione dei dati personali dalle informazioni accessibili al modello.
In un precedente approfondimento su IlSoftware.it abbiamo spiegato come un sito possa impartire istruzioni malevole agli agenti AI attraverso gli header delle risposte HTTP.
Il caso Claude Code evidenzia il problema complementare: non dobbiamo controllare soltanto ciò che i siti comunicano agli agenti, ma anche ciò che gli agenti comunicano ai siti!
La protezione più efficace consiste nel ridurre le informazioni personali accessibili all’assistente, richiedere conferme prima delle comunicazioni esterne e verificare le richieste effettivamente generate, senza affidarsi esclusivamente alle istruzioni impartite al modello.