Immagine AI

Un’operazione di backup affidata a Claude Code si sarebbe trasformata nella cancellazione di gran parte dei dati presenti nella directory home di un utente, dopo che l’agente di coding ha interpretato in modo errato il percorso utilizzato dal sistema e ha eseguito un comando di eliminazione ricorsiva sulla cartella sbagliata. L’episodio mostra in modo molto concreto quali conseguenze può produrre un errore di interpretazione quando un agente di intelligenza artificiale dispone dell’autorizzazione necessaria per eseguire direttamente comandi sul file system.

Il caso è stato descritto da uno sviluppatore che aveva chiesto a Claude di creare un backup del proprio sistema. Durante la procedura, l’agente avrebbe rilevato che alcuni file erano stati generati in una directory considerata errata e avrebbe quindi tentato di rimuoverli prima di proseguire. Il problema è nato nell’identificazione del percorso da cancellare: invece di limitare l’operazione alla directory utilizzata per il backup, il comando ha interessato la cartella principale contenente il profilo dell’utente.

L’ambiente utilizzato combinava Windows con una shell compatibile con la sintassi Unix, una configurazione nella quale lo stesso percorso può essere rappresentato in forme differenti. Un indirizzo Windows come C:\Users\... può infatti essere esposto da determinate shell come /c/Users/...; secondo la ricostruzione dell’episodio, Claude avrebbe confuso queste rappresentazioni e considerato la directory dell’utente come la cartella temporanea o di backup da eliminare.

A quel punto è stato eseguito rm -rf, comando Unix che combina la cancellazione ricorsiva delle directory con l’eliminazione forzata dei relativi contenuti. Il parametro -r permette di attraversare tutte le sottodirectory, mentre -f evita numerose richieste di conferma; se il percorso indicato è errato, l’operazione può quindi estendersi rapidamente a grandi quantità di dati.

Il problema tecnico principale non riguarda la generazione di una risposta sbagliata, ma l’esecuzione materiale di un’azione sul sistema operativo. Un agente di coding può leggere file, modificarli, avviare programmi e utilizzare strumenti da terminale; quando dispone delle relative autorizzazioni, le decisioni generate dal modello diventano operazioni effettive sul computer e un errore nella scelta del comando, degli argomenti o del percorso può quindi produrre conseguenze immediate.

Claude Code dispone di differenti modalità di autorizzazione proprio per controllare questo tipo di accesso. Nella modalità Manual, il sistema richiede l’approvazione dell’utente prima di modificare file e prima di eseguire la maggior parte dei comandi shell, mentre altre configurazioni permettono di automatizzare una parte crescente delle operazioni. Anthropic mette inoltre a disposizione una modalità denominata Bypass permissions, equivalente nell’interfaccia a riga di comando all’opzione --dangerously-skip-permissions, che elimina gran parte delle richieste di autorizzazione e viene esplicitamente indicata come adatta esclusivamente ad ambienti isolati, come container o macchine virtuali.

Anche le modalità intermedie richiedono comunque attenzione. La documentazione di sicurezza di Claude Code specifica che Accept Edits può autorizzare automaticamente alcune operazioni sul file system all’interno della directory di lavoro, comprendendo comandi come mkdir, touch, rm, mv, cp e sed; l’accesso a percorsi esterni continua invece a dipendere dalle regole di autorizzazione configurate dall’utente o dall’organizzazione.

Il controllo dell’ambito operativo diventa quindi essenziale. Le autorizzazioni di Claude Code possono essere definite attraverso regole che consentono o negano specifici strumenti, comandi e directory; una regola di negazione ha precedenza sulle autorizzazioni più permissive, permettendo di impedire determinate operazioni anche quando altre impostazioni ne consentirebbero normalmente l’esecuzione. Anthropic permette inoltre alle organizzazioni di disabilitare completamente la modalità di bypass, evitando che possa essere attivata dagli utenti all’interno degli ambienti gestiti.

Un ulteriore livello di controllo può essere implementato attraverso gli hook eseguiti prima dell’utilizzo degli strumenti. Claude Code permette, per esempio, di intercettare una chiamata alla shell prima della sua esecuzione e bloccare automaticamente comandi considerati distruttivi. La documentazione di Anthropic utilizza proprio rm -rf come esempio, mostrando una configurazione nella quale un hook PreToolUse analizza il comando richiesto e restituisce una decisione di rifiuto quando individua quella sequenza.

Questi hook vengono valutati prima dei controlli relativi alla modalità di autorizzazione e possono quindi applicare restrizioni anche quando Claude Code opera con permessi molto ampi. Una policy che blocca un determinato comando continua ad avere effetto anche in modalità Bypass permissions, rendendo possibile separare le azioni normalmente automatizzabili da quelle che devono rimanere sempre escluse o sottoposte a una procedura differente.

Il backup rappresenta inoltre un caso particolarmente delicato perché lo stesso agente che deve proteggere i dati può diventare, se configurato con accessi troppo estesi, in grado di modificare o cancellare anche le copie create. Una strategia più robusta prevede quindi che almeno una copia dei dati venga conservata al di fuori dell’area sulla quale l’agente possiede permessi di scrittura o eliminazione, oppure in un sistema nel quale le versioni precedenti possano essere recuperate indipendentemente dalle azioni eseguite durante la sessione.

Lo stesso principio vale per repository, database e infrastrutture cloud. L’agente dovrebbe ricevere soltanto i privilegi effettivamente necessari per completare il compito assegnato, mentre le operazioni irreversibili possono essere separate dal normale flusso operativo attraverso autorizzazioni esplicite, regole di negazione o ambienti isolati.

L’episodio evidenzia quindi un problema specifico della transizione dai chatbot agli agenti operativi. Un modello che suggerisce un comando errato produce un’informazione da correggere; un agente autorizzato a eseguire direttamente quel comando può invece modificare il sistema prima che l’errore venga individuato. La sicurezza degli strumenti di coding agentico dipende per questo non soltanto dalla capacità del modello di interpretare correttamente le istruzioni, ma anche dall’architettura delle autorizzazioni, dai limiti imposti all’ambiente di esecuzione e dalla presenza di controlli indipendenti sulle operazioni distruttive.

Di Fantasy