Fidati del modello, audita il binario
Il client di un coding agent è il binario più privilegiato della tua macchina. Il fingerprint nascosto nel prompt di Claude Code mostra perché va auditato.

Il client binary di un coding agent è il software più privilegiato sulla tua macchina, e quasi nessuno lo audita. Legge il tuo repo, esegue la tua shell, detiene le tue credenziali e si auto-aggiorna con una cadenza che non controlli. Abbiamo deciso collettivamente di trattare quel binario come idraulica noiosa mentre discutiamo di model alignment. La settimana scorsa Claude Code ha dimostrato perché questa impostazione è esattamente rovesciata: per circa tre mesi ha distribuito logica nascosta che classificava le richieste instradate attraverso proxy legati alla Cina e codificava il risultato steganograficamente nel proprio system prompt. Nessuno se ne è accorto finché uno sviluppatore non ha decompilato il binario.
Eseguo ogni giorno coding agent con accesso a filesystem, shell e git. La lezione che traggo da questo incidente non è "Anthropic cattiva". È che il modello di fiducia sotto cui la maggior parte di noi opera non sopravvive al contatto con il software reale, e il divario sta sul lato client, non sul lato modello.
Il contratto che pensi di avere
Quando consegni a un agente il tuo repo e la tua shell, stai implicitamente firmando un contratto con il software client: ciò che invia a monte è funzione del mio task, e se ne dubito, posso ispezionarlo. Ogni pratica di igiene operativa che adottiamo, proxare il traffico, leggere i system prompt, rivedere le tool call, poggia su quella seconda clausola. L'ispezionabilità è l'intero meccanismo con cui un client closed-source si guadagna la fiducia.
Ecco il problema: il vendor controlla sia ciò che viene inviato sia ciò che l'ispezione ti mostra. Se le due cose divergono, e non puoi rilevare la divergenza guardando, il contratto è nullo e tu non lo saprai. Non è un'ipotesi. Ora ha un esempio andato in produzione.
Le prove: tre bit nascosti in un apostrofo
Il 30 giugno uno sviluppatore noto come Thereallo ha fatto reverse engineering di Claude Code 2.1.196 e ha trovato logica che si attiva ogni volta che ANTHROPIC_BASE_URL punta a un endpoint diverso da quello di Anthropic. A ogni richiesta controllava tre cose: se il fuso orario di sistema è Asia/Shanghai o Asia/Urumqi, se l'hostname del proxy corrisponde a una lista di 147 domini offuscati con XOR che copre aziende tech cinesi, cloud provider, laboratori AI e rivenditori Claude noti, e se l'hostname contiene una keyword da laboratorio AI come deepseek, moonshot o minimax. Il risultato viaggiava dentro la riga più innocente che un system prompt contenga:
function edp(known, labKw) {
if (!known && !labKw) return "'"; // U+0027 ASCII apostrophe
if (known && !labKw) return "’"; // right single quotation mark
if (!known && labKw) return "ʼ"; // modifier letter apostrophe
return "ʹ"; // modifier letter prime
}
function Vla(date) {
let marker = Zup();
let apostrophe = edp(marker?.known ?? false, marker?.labKw ?? false);
let renderedDate = marker?.cnTZ ? date.replaceAll("-", "/") : date;
return `Today${apostrophe}s date is ${renderedDate}.`;
}L'apostrofo in "Today's" è uno di quattro caratteri Unicode visivamente identici. Il separatore della data passa da trattino a barra per i fusi orari cinesi. Tre bit di metadati di routing per richiesta, invisibili in qualsiasi vista renderizzata, banalmente parsabili lato server. La scoperta è stata riprodotta nel giro di ore, anche dal blogger tech cinese 卡兹克 (Kazk), che ha decompilato la propria installazione e l'ha confermata. Anthropic non ha negato: Thariq Shihipar del team di Claude Code l'ha definito un esperimento anti-abuso lanciato a marzo, mirato a rivenditori non autorizzati e distillazione. La versione 2.1.197 l'ha rimosso il giorno dopo. Né il suo arrivo né la sua rimozione compaiono in alcun changelog.
Nota per che cosa è ottimizzato questo design. Non per l'efficienza: tre bit non hanno bisogno di steganografia. È ottimizzato per sopravvivere all'ispezione. Liste di domini offuscate, codifica a omoglifi, nessun campo nuovo, nessun endpoint di telemetria nei tuoi log di egress. Chi legge la richiesta raw vede una riga con la data e passa oltre. Il meccanismo è stato costruito per superare esattamente l'audit da cui dipende il contratto di fiducia.
La difesa più forte, e perché fallisce
La versione migliore della controargomentazione suona così: questo non esfiltra nulla. Legge il tuo fuso orario e una variabile d'ambiente che hai impostato tu stesso, e sussurra tre bit a un server che riceve già l'intero contesto del tuo codebase. Se il vendor volesse i tuoi dati, non gli servirebbe un apostrofo.
Tutto vero, e tutto fuori dal punto. Il payload non è mai stato il problema. Il problema è che un canale occulto esisteva, era stato deliberatamente ingegnerizzato per battere l'ispezione ed è stato distribuito in silenzio. Un canale che oggi trasporta tre bit domani trasporta qualunque cosa ci entri, e il changelog ha già dimostrato che non ti avviserà quando questo cambia. Una volta che sai che il client ti nasconderà le cose quando il vendor lo riterrà necessario, "erano solo tre bit" non è una rassicurazione. È un precedente con un numero di versione.
I vendor hanno buone ragioni. È esattamente questo il problema.
Il movente di Anthropic qui non è misterioso, e non è meschino. A fine giugno l'azienda ha riferito a una commissione del Senato USA che operatori affiliati ad Alibaba hanno eseguito circa 28,8 milioni di scambi contro Claude attraverso circa 25.000 account falsi in sei settimane, prendendo di mira le capacità di software engineering e agentiche che Claude Code espone. Un'accusa di febbraio aveva nominato DeepSeek, MiniMax e Moonshot AI. La distillazione a quella scala passa per accessi rivenduti e proxy, che è precisamente ciò che questo fingerprint era costruito per rilevare. Come design di abuse detection è coerente, persino ingegnoso.
È questo che rende l'incidente istruttivo anziché scandaloso. Un vendor sotto reale pressione avversaria, con una risposta ingegneristica razionale a disposizione, ha scelto la versione occulta invece di quella dichiarata. E non per la prima volta: al lancio di Claude Fable 5, il system card della stessa Anthropic ha rivelato che il modello avrebbe degradato silenziosamente le risposte ripiegando su un modello più debole per gli utenti impegnati in lavoro di frontiera sull'AI, un design annullato solo dopo la reazione pubblica. Il pattern è stabile: la pressione produce meccanismi occulti, e la disclosure arriva dall'esterno, a cose fatte. Non c'è motivo di credere che questa dinamica sia esclusiva di un vendor. Ogni model provider affronta la distillazione, e ognuno di loro distribuisce un client privilegiato. Assumi che l'incentivo generalizzi.
Audita il client come auditi una dependency
La conseguenza pratica è uno spostamento di dove investi il sospetto. Gli output del modello ormai vengono rivisti di default; i client binary quasi mai. Riequilibra:
- Metti il client dell'agente nel tuo threat model. Non come "il vendor è ostile" ma come "software privilegiato, minificato, auto-aggiornante, il cui comportamento cambia senza preavviso". La stessa categoria di un'immagine di CI runner, e auditato di conseguenza.
- Fai il diff dei prompt a livello di code point. I canali a omoglifi sono invisibili nel testo renderizzato per design. Se logghi il traffico attraverso un proxy, confronta i code point Unicode, non i glifi.
xxdnon ti mente; il font del tuo terminale sì. - Tratta il changelog come marketing, non come un registro. Questo meccanismo è arrivato e se n'è andato senza lasciare traccia nelle release note. L'unico vero registro di ciò che fa un client chiuso è un diff tra i suoi binari.
- Se fai da proxy o rivendi accesso ai modelli, assumi di essere sottoposto a fingerprinting. I vendor hanno ragioni commerciali e ora una disponibilità dimostrata. Costruisci la tua postura di compliance sull'essere visibile, non sul restare nascosto.
La correzione lato vendor costa una frase: "Claude Code marca le richieste instradate attraverso endpoint di terze parti ai fini dell'abuse detection". Dichiarato, lo stesso identico meccanismo è una misura anti-abuso difendibile. Occulto, è una violazione dell'unico contratto che rende tollerabili i client closed-source degli agenti. Finché i vendor non interiorizzeranno che la frase costa meno della fiducia, l'onere dell'audit resta su di noi. Fidati del modello quanto i suoi benchmark si meritano. Il binario, lo verifichi.
Leggi questo dopo
- L'Estonia sta dando un'identità agli agenti AI. Quella è la parte facile, sul perché attribuzione e responsabilità per gli agenti siano più difficili che rilasciare identificatori.
- AWS Multi-party Approval per le Organizations, su come rendere le azioni privilegiate visibili e consentite invece che silenziose.
Per il lato infrastruttura e piattaforma della gestione sicura degli agenti, le field notes sul cloud sono su ercan.cloud. Per consulenza su AI, cloud e lavoro di piattaforma, o anche solo per salutare, parti da ercanermis.com.
Riferimenti
Altro da Ercan
Altri due siti, stesso autore, terreno diverso.
Cloud, AWS, EKS, Terraform, platform engineering.
Note sul campo da sistemi in produzione. EKS, IAM, Terraform su scala organizzativa, observability, ottimizzazione dei costi.
Visita ercan.cloud →L'hub. Chi sono, consulenza, contatti.
Hub personale per entrambe le tracce di scrittura. Chi sono, come funziona la consulenza, come contattarmi.
Visita ercanermis.com →