Claude Code 2.1.223: la finestra dei permessi ora mostra il comando intero
Claude Code 2.1.223, pubblicata il 6 agosto 2026, chiude quattro falle nel sistema dei permessi, e la più interessante non è un controllo che veniva saltato. Il changelog ufficiale di Claude Code riporta che le richieste di permesso non permettono più a un comando riempito di tabulazioni o di caratteri Unicode invisibili di nascondere parte di sé dalla finestra di approvazione. Il controllo partiva, la domanda arrivava, e la persona davanti allo schermo rispondeva guardando un testo incompleto.
Il dialogo di approvazione di Claude Code è la finestra che chiede conferma prima di eseguire un comando che non rientra nelle regole già concesse. È il punto in cui un essere umano si mette in mezzo fra il modello e la macchina, ed è l'unico pezzo dell'intero sistema di permessi che funziona soltanto se qualcuno lo legge davvero.
Perché un comando riempito di caratteri invisibili è un problema diverso
Un aggiramento dei permessi inganna il codice, un comando riempito di Unicode invisibile inganna la persona. La distinzione conta, perché le due cose si correggono in posti diversi e si notano in momenti diversi. Nella 2.1.223 di Claude Code compaiono entrambe le varianti a poche righe di distanza: da una parte un comando costruito ad arte poteva nascondere parti di sé dai controlli sui permessi, dall'altra il testo mostrato nel dialogo di approvazione poteva non coincidere con il comando che sarebbe partito.
La seconda è la più scomoda delle due. Un buco nel controllo automatico è un difetto del software, e quando viene corretto sparisce per tutti. Un comando che si presenta in modo diverso da come si comporta è invece un difetto che sfrutta l'unica difesa che il software non può migliorare per conto suo, cioè l'attenzione di chi legge. Nessuno ispeziona carattere per carattere il contenuto di una finestra che ha già visto duecento volte, e chi ha scritto quel comando lo sa.
Su questo sito le routine che scrivono gli articoli girano ogni mattina da sole, senza nessuno davanti al terminale, e la documentazione in automazione-blog/ mette per iscritto una scelta presa proprio per questo motivo: l'agente cloud non entra mai nella VPS via SSH, chiama soltanto un endpoint HTTP protetto da token. Quando non c'è un dialogo di approvazione da leggere, l'unica difesa che resta è quella decisa prima, quando la sessione ancora non esisteva. Le correzioni della 2.1.223 riducono la superficie di rischio di chi guarda, ma per chi non guarda cambia poco: là il confine lo disegna la configurazione, non la conferma.
Le altre tre correzioni ai permessi della 2.1.223
Le altre tre voci sui permessi di Claude Code 2.1.223 riguardano tutte confini che valevano meno di quanto sembrasse. Gli script dei workflow potevano usare un import() dinamico per eseguire codice fuori dalla sandbox del workflow. La modalità bypassPermissions scritta dentro la definizione di un agente ignorava la policy aziendale che disattiva il bypass dei permessi. Il changelog ufficiale registra la correzione di entrambe.
Vale la pena leggere la seconda con gli occhi di chi amministra un'organizzazione e non di chi usa il terminale. Una policy che disabilita il bypass dei permessi ha senso solo se non esiste un file, dentro un repository qualsiasi, che riesce a rimetterlo. Un amministratore che aveva attivato quel divieto aveva ragione a considerarlo attivo, e nel frattempo una definizione di agente poteva rimetterlo in piedi in silenzio. È la stessa dinamica raccontata nell'isolamento dei worktree corretto nella 2.1.222: il confine esisteva in un posto e non nell'altro, e chi lo aveva scelto non aveva modo di accorgersene.
Tre versioni consecutive di Claude Code hanno portato correzioni al sistema dei permessi, dall'aggiramento del controllo di Bash sotto zsh corretto nella 2.1.221 fino a queste. Non lo leggo come un segnale di fragilità del prodotto, lo leggo come il costo naturale di un sistema di permessi che deve capire ogni shell, ogni codifica di caratteri e ogni formato di configurazione. Ogni superficie nuova che l'agente impara a toccare è una superficie in più da controllare, e la lista continuerà ad allungarsi.
Cosa cambia nell'uso quotidiano: /code-review, /teleport e le marketplace
Fuori dai permessi, la novità che si nota subito in Claude Code 2.1.223 è che /review è diventato un alias di /code-review. Il comando rivede il diff corrente oppure una pull request, nella forma /code-review <livello> <numero pr>, e il livello ultra avvia una revisione approfondita nel cloud. Se il livello di sforzo non viene indicato, Claude Code riusa l'ultimo che è stato digitato, quindi per cambiarlo bisogna scriverlo esplicitamente, per esempio /code-review high.
Le sessioni cloud mostrano ora un suggerimento /teleport che ricorda come continuare il lavoro in locale con claude --teleport <id sessione>. Le impostazioni gestite strictKnownMarketplaces e blockedMarketplaces accettano voci con wildcard sul proprietario nella forma owner/*, così si consente o si blocca in una riga sola tutta un'organizzazione GitHub invece di elencarne i repository. E quando un workflow agent, una skill forkata, uno slash command o un agente in background ripreso chiede un modello per il subagente che risulta ristretto, adesso compare un avviso che segnala che sta girando il modello del padre.
Cosa controllare dopo l'aggiornamento
Ci sono quattro cose concrete da verificare dopo essere passati a Claude Code 2.1.223, e nessuna richiede più di qualche minuto. La prima è il file modelOverrides: le chiavi che non sono identificatori di modelli Anthropic non vengono più trattate come il modello canonico della sessione e adesso vengono ignorate, come la documentazione già diceva. Se una di quelle chiavi stava reggendo una configurazione che sembrava funzionare, da questa versione smette di farlo.
La seconda riguarda il contesto. La variabile CLAUDE_CODE_DISABLE_1M_CONTEXT ora tiene entro i 200K, tramite compattazione automatica, ogni modello Claude con finestra nativa da 1M e non più soltanto un elenco fisso, e all'avvio compare un avviso quando la compattazione automatica non riesce a tenere la sessione dentro quel limite. In parallelo la compattazione automatica mantiene entro la finestra presunta anche le sessioni che girano su identificatori di modello non riconosciuti, e chi ha bisogno del comportamento precedente lo recupera con CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1.
La terza è per chi lavora su Linux con la sandbox: i comandi eseguiti in sandbox non partivano quando sandbox.filesystem.denyWrite copriva la directory di lavoro, e la 2.1.223 lo corregge. La quarta è per chi passa da un gateway aziendale, da Vertex AI o da Bedrock: la scoperta dei modelli nascondeva i modelli Claude registrati con identificatori che hanno un prefisso di provider, per esempio vertex_ai/claude-* oppure bedrock/anthropic.claude-*. Se un modello che sapevate disponibile non compariva nell'elenco, il motivo poteva essere questo e non un problema di autorizzazioni. Chi non ha ancora sistemato la propria configurazione di base trova il punto di partenza nella guida alla configurazione di Claude Code.
La riga che porto via dalla 2.1.223 è che una conferma vale quanto quello che ti fa vedere. Un sistema di permessi si giudica dal caso peggiore, non da quello medio, e il caso peggiore è sempre quello in cui la cosa che stai approvando non è la cosa che hai letto.
Domande frequenti
Il dialogo di approvazione di Claude Code è una difesa affidabile?
Il dialogo di approvazione di Claude Code è una difesa utile ma non una garanzia, perché è software e può avere difetti. La versione 2.1.223 ne corregge due nella stessa famiglia: un comando costruito ad arte poteva nascondere parti di sé dai controlli sui permessi, e un comando riempito di tabulazioni o di caratteri Unicode invisibili poteva nascondere parte di sé dalla finestra di approvazione. Chi lavora con sessioni non presidiate non ha comunque nessun dialogo davanti, e deve difendersi con la configurazione.
Cosa fa il comando /code-review di Claude Code?
Il comando `/code-review` di Claude Code rivede il diff corrente oppure una pull request, nella forma `/code-review <livello> <numero pr>`. Dalla versione 2.1.223 il vecchio `/review` è diventato un alias di `/code-review`. Se non si indica un livello di sforzo viene riusato l'ultimo digitato, e per cambiarlo basta scriverlo esplicitamente, per esempio `/code-review high`. Il livello `ultra` esegue una revisione approfondita nel cloud.
Come si continua in locale una sessione cloud di Claude Code?
Una sessione cloud di Claude Code si riprende in locale con il comando `claude --teleport <id sessione>`. Dalla versione 2.1.223 le sessioni cloud mostrano direttamente un suggerimento `/teleport` che ricorda la sintassi, così non serve andarla a cercare nella documentazione.
Si può bloccare un'intera organizzazione GitHub nelle marketplace di Claude Code?
Sì. Dalla versione 2.1.223 le impostazioni gestite `strictKnownMarketplaces` e `blockedMarketplaces` di Claude Code accettano voci con wildcard sul proprietario, nella forma `owner/*`. Una singola riga permette quindi di consentire o di bloccare tutti i repository marketplace che stanno sotto una determinata organizzazione GitHub, invece di elencarli uno per uno.
A cosa serve la variabile CLAUDE_CODE_DISABLE_1M_CONTEXT?
La variabile `CLAUDE_CODE_DISABLE_1M_CONTEXT` serve a tenere una sessione di Claude Code entro i 200K token di contesto tramite la compattazione automatica. Dalla versione 2.1.223 vale per ogni modello Claude che abbia una finestra nativa da 1M, e non più soltanto per un elenco fisso di modelli. Se la compattazione automatica non riesce a tenere la sessione entro i 200K, all'avvio compare un avviso.