Claude Code bypass permissions: rischi e alternative

Scopri cosa disattiva il bypass dei permessi in Claude Code, quali controlli restano attivi e quando usare modalità auto, regole mirate o un devcontainer.

Pubblicato il

Claude Code bypass permissions: rischi e alternative

In Claude Code bypass permissions elimina le conferme di routine, ma non serve concedere carta bianca a ogni chiamata a uno strumento per smettere di sorvegliarlo di continuo. claude --dangerously-skip-permissions attiva bypassPermissions e rimuove anche i normali controlli sui file di configurazione protetti. Riservalo a un ambiente isolato. Se il problema quotidiano sono le continue richieste di conferma, parti dalla modalità auto o da regole di autorizzazione mirate.

Claude Code bypass permissions: quali controlli disattiva?

--dangerously-skip-permissions e --permission-mode bypassPermissions attivano la stessa modalità. Claude può modificare file, eseguire comandi della shell e chiamare altri strumenti senza fermarsi per le consuete approvazioni. La modalità consente anche di scrivere nei percorsi protetti. Al primo avvio interattivo compare un avviso sulla responsabilità dell'utente; se non lo accetti, Claude Code si chiude. Documentazione Anthropic sul bypass dei permessi

Immagina i permessi come uno sportello che autorizza il lavoro e l'isolamento come le pareti del laboratorio. Togliere lo sportello non costruisce le pareti. Il vantaggio pratico è una sessione senza interruzioni; il prezzo da pagare è perdere l'occasione di intercettare un'azione sbagliata prima che venga eseguita.

Il flusso di lavoro cambia: invece di approvare le singole operazioni, definisci prima l'ambiente e controlli i risultati dopo. Questo non rende corretto il codice e non neutralizza le istruzioni ostili.

Schema architettonico del flusso di una richiesta a uno strumento, con blocchi espliciti, conferme di routine saltate e un ambiente di lavoro isolato separato
Regole di approvazione e isolamento hanno funzioni diverse. Il bypass elimina le conferme di routine; spetta all'ambiente confinare l'esecuzione.

Quali controlli restano attivi?

La parola «skip» non significa che sparisca ogni controllo. Le distinzioni seguenti spiegano perché un'esecuzione che dovrebbe procedere senza supervisione può fermarsi o rifiutare un'azione:

ControlloCosa resta attivo
Regole deny espliciteLe chiamate corrispondenti restano bloccate in tutte le modalità di autorizzazione. Un elenco allow non limita il bypass alle sole voci elencate.
Regole ask espliciteLe chiamate corrispondenti richiedono ancora l'approvazione.
Interazione obbligatoriaAskUserQuestion, gli strumenti MCP contrassegnati con requiresUserInteraction e gli strumenti dei connettori controllati dall'organizzazione e impostati su ask mantengono i propri requisiti di interazione.
Controlli sulla rimozione di percorsi criticirm e rmdir rivolti a percorsi come la radice del filesystem, la directory home o la directory di lavoro continuano ad attivare controlli specifici.
Altri limitiRestano valide le protezioni per i messaggi tra sessioni e la restrizione configurata sulle letture al di fuori delle directory di lavoro.

Per l'ultima riga, l'impostazione esatta è permissions.blockReadsOutsideWorkingDirectories: true. I comandi Bash riconosciuti come comandi di lettura possono ancora richiedere una conferma fuori dalle directory consentite; i blocchi imposti dalla sandbox si comportano diversamente. In un'esecuzione bypass non interattiva con -p, le chiamate che richiederebbero ancora una conferma vengono invece negate. Azioni che nessuna modalità approva automaticamente, impostazione per le letture fuori directory

Anche gli hook PreToolUse che bloccano le chiamate continuano a intervenire nell'approvazione degli strumenti. Esiste un'eccezione specifica per EndConversation: le regole deny e ask non lo limitano finché rimane disponibile un altro strumento. Le mod installate possono prevalere su alcune decisioni di autorizzazione non gestite centralmente, quindi i controlli obbligatori di un team vanno inseriti nei criteri gestiti. Gli amministratori possono vietare il bypass con "permissions": {"disableBypassPermissionsMode": "disable"}. Anche una sessione avviata con --restricted rifiuta questa modalità. Precedenza di hook e regole, impostazione per disabilitare il bypass

In modalità bypass si può scrivere nei percorsi protetti

Non dare per scontato che per modificare .git o .claude serva ancora una conferma. La modalità bypass consente le scritture nei percorsi protetti. È un meccanismo diverso dai controlli sulla cancellazione delle directory critiche descritti sopra.

L'elenco dei percorsi protetti di Anthropic comprende:

CategoriaPercorsi
Directory del repository e dell'editor.git, .config/git, .vscode, .idea, .husky
Directory di build e dell'ambiente.cargo, .devcontainer, .yarn, .mvn
Configurazione di Claude ed estensioni eseguibili.claude, directory caricate con --plugin-dir, ~/.claude/dev-mods/ o la corrispondente dev-mods/ sotto CLAUDE_CONFIG_DIR
File di Git e della shell.gitconfig, .gitmodules, .bashrc, .bash_profile, .bash_login, .bash_aliases, .bash_logout, .zshrc, .zprofile, .zshenv, .zlogin, .zlogout, .profile, .envrc
File dei pacchetti e di build.npmrc, .yarnrc, .yarnrc.yml, .pnp.cjs, .pnp.loader.mjs, .pnpmfile.cjs, bunfig.toml, .bunfig.toml, .bazelrc, .bazelversion, .bazeliskrc
Hook e wrapper.pre-commit-config.yaml, lefthook.yml, lefthook.yaml, .lefthook.yml, .lefthook.yaml, gradle-wrapper.properties, maven-wrapper.properties
Altri file di configurazione.devcontainer.json, .ripgreprc, pyrightconfig.json, .mcp.json, .claude.json e destinazioni dei collegamenti simbolici ai file delle impostazioni

All'interno di .claude esistono eccezioni circoscritte, tra cui i worktree di Claude, i file del piano corrente, lo spazio temporaneo delle sessioni in background e alcuni file Markdown della memoria. Nelle normali sessioni Manual e acceptEdits, le scritture protette richiedono una conferma; la modalità auto le sottopone al proprio classificatore. Una regola allow in un file delle impostazioni non può autorizzarle in anticipo. Percorsi protetti ed eccezioni

Quattro alternative più sicure per ridurre le interruzioni

Scegli il controllo adatto all'interruzione che vuoi eliminare. Alla maggior parte degli sviluppatori serve prima di tutto una politica di approvazione più precisa, prima ancora del bypass.

Usa la modalità auto per il normale lavoro di sviluppo

Avvia una sessione con claude --permission-mode auto. Un classificatore, cioè un modello separato che esamina le azioni proposte, prende le decisioni di approvazione di routine. Per renderla la modalità predefinita del terminale, integra "permissions": {"defaultMode": "auto"} in ~/.claude/settings.json.

Inserire quel valore in .claude/settings.json o .claude/settings.local.json non la attiva. La modalità auto dipende anche dai modelli supportati e dalle impostazioni dell'organizzazione; le regole ask esplicite continuano a richiedere conferma. Riduce le interruzioni, senza garantire la sicurezza. Impostazione della modalità predefinita, requisiti della modalità auto

La nostra guida alla modalità auto di Claude Code spiega quando questo modello di revisione si adatta al tuo flusso di lavoro.

Autorizza le operazioni abituali e vieta azioni specifiche

Usa permissions.allow per i comandi che hai verificato e permissions.deny per le operazioni da bloccare. Claude Code valuta prima deny, poi ask e infine allow. Un'autorizzazione ampia non può annullare un divieto che corrisponde alla stessa operazione. Regole di autorizzazione

Per un repository attendibile, l'esempio seguente combina autorizzazioni mirate e un hook di blocco. Integralo in .claude/settings.json, mantenendo le chiavi già presenti. Le sessioni del terminale partono volutamente in modalità Manual, così sono le autorizzazioni elencate a regolare il lavoro. Prima di approvarli, controlla che cosa eseguono davvero gli script di test e lint del progetto.

JSON
{
  "permissions": {
    "defaultMode": "default",
    "allow": ["Bash(npm test)", "Bash(npm run lint)"],
    "deny": ["Bash(git push *)", "Read(./.env)", "Read(./.env.*)"]
  },
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{
        "type": "command",
        "if": "Bash(rm *)",
        "command": "echo 'Use the approved cleanup task instead.' >&2; exit 2"
      }]
    }]
  }
}

Per impostazioni personali che prevalgano su quelle del progetto, usa .claude/settings.local.json; se crei il file manualmente, aggiungilo a .gitignore. Apri /permissions per vedere le regole attive e i file da cui provengono. Ambito delle impostazioni

Questi pattern non isolano né il filesystem né la rete. Forme alternative dello stesso comando possono sfuggire a un pattern Bash, e gli script possono leggere file indirettamente nonostante le regole deny applicate agli strumenti di accesso ai file. Tieni i segreti fuori dall'ambiente e usa i vincoli della sandbox quando un accesso deve essere impossibile. Limiti delle regole Bash, limiti delle regole sui file

Parti dalla modalità plan prima di una modifica estesa

Avvia claude --permission-mode plan, oppure imposta "permissions": {"defaultMode": "plan"} nelle impostazioni del progetto. Claude esplora il codice e propone il lavoro prima che vengano approvate modifiche ai sorgenti. L'impostazione di primo livello "useAutoModeDuringPlan": false disattiva l'approvazione dei comandi di pianificazione da parte del classificatore: i comandi che non rientrano nell'insieme predefinito di sola lettura richiedono quindi la tua approvazione. Configurazione della modalità plan

Avvia una nuova sessione plan senza flag che rendano disponibile il bypass. In una sessione interattiva del terminale in cui il bypass è disponibile, la modalità plan non applica i consueti blocchi su modifiche e comandi. Vale anche quando la disponibilità è stata abilitata con --allow-dangerously-skip-permissions, che permette di selezionare il bypass in seguito senza attivarlo subito. Modalità plan e disponibilità del bypass

Usa gli hook per bloccare comandi specifici

Il gestore hooks.PreToolUse dell'esempio usa matcher: "Bash", type: "command" e if: "Bash(rm *)". Quando la condizione corrisponde, il comando della shell stampa una spiegazione e termina con codice 2, bloccando la chiamata allo strumento. Non serve uno script separato. Il comando della shell è un nostro piccolo esempio basato sui campi degli hook e sul codice di uscita bloccante documentati da Anthropic. Configurazione degli hook, codici di uscita che bloccano l'esecuzione

Questo blocca le chiamate rm corrispondenti, non tutti i modi possibili di cancellare un file. Un team potrebbe sostituirlo con un validatore verificato per i propri comandi di deployment o pulizia. Mantieni i controlli abbastanza circoscritti da poterli capire e testare. La nostra pagina sugli hook di Claude Code ne illustra la configurazione e il debug.

Quattro percorsi architettonici etichettati Auto, Rules, Plan e Hooks mostrano la revisione delle azioni, le regole di autorizzazione o divieto, l'esplorazione e il blocco dei comandi
Scegli il controllo adatto: revisione automatica delle azioni, autorizzazioni precise, pianificazione iniziale o blocco di un comando.

In quali ambienti Anthropic consente il bypass?

La tabella delle configurazioni comuni di Anthropic richiede un container, una VM o un runtime sandbox, con un utente non root su Linux e macOS. La sezione sul bypass descrive ambienti isolati che non possono danneggiare l'host e cita in particolare quelli senza accesso a Internet. La guida al devcontainer presenta invece una configurazione connessa, con accesso in uscita limitato ai servizi necessari a Claude. Considera l'accesso alla rete senza restrizioni come un'esposizione distinta. Isolamento richiesto, restrizioni di rete del devcontainer

Su Linux e macOS, l'avvio del bypass come root o tramite sudo viene normalmente rifiutato. La documentazione segnala un'eccezione automatica all'interno di una sandbox riconosciuta; la procedura documentata per il devcontainer usa un account non root. Non risolvere un errore legato a root indebolendo questo limite.

Configurare Claude Code con Docker: il devcontainer di riferimento

Usa un checkout usa e getta di un repository attendibile. Dopo aver installato Docker, VS Code e l'estensione Dev Containers, parti dal progetto di riferimento di Anthropic:

Bash
git clone https://github.com/anthropics/claude-code.git claude-code-isolated
code claude-code-isolated
  1. In VS Code, esegui Dev Containers: Reopen in Container. Il progetto di riferimento combina la CLI, volumi persistenti e un firewall per il traffico in uscita. Verifica che remoteUser indichi un account non root.
  2. Nel terminale del container, esegui id -u e verifica che il risultato non sia 0. Esegui claude per accedere, poi chiudi quella sessione.
  3. Nello stesso terminale del container, esegui claude -p "Inspect this repository and summarize its structure. Do not change files." --dangerously-skip-permissions.
  4. Per il tuo progetto, copia la directory .devcontainer/ di riferimento in un checkout usa e getta e adatta il Dockerfile alla toolchain del progetto. Controlla il diff dell'area di lavoro dopo ogni attività.

La procedura segue il flusso di lavoro del container di riferimento di Anthropic. Il riferimento è un esempio funzionante, non un'immagine base mantenuta. Conserva le restrizioni sul traffico in uscita oppure applica controlli di rete equivalenti.

L'area di lavoro montata resta scrivibile dall'interno del container e le modifiche arrivano anche sull'host. Evita di montare ~/.ssh, file con credenziali cloud o directory estranee al progetto. Un progetto malevolo può comunque sottrarre tutto ciò che è accessibile all'interno, comprese le credenziali di Claude. Usa repository attendibili e monitora il lavoro. Limiti del devcontainer

Le sessioni cloud ignorano il bypass come modalità predefinita

Le sessioni cloud ignorano senza avvisi le impostazioni defaultMode: "bypassPermissions" e defaultMode: "dontAsk" presenti nei file di configurazione. Partono nella modalità mostrata nel menu a discesa dell'ambiente cloud. Un'impostazione JSON salvata nel repository non può imporre il bypass a una sessione cloud. Comportamento delle modalità nel cloud

Il file locale ~/.claude/settings.json non viene trasferito nelle sessioni cloud ospitate da Anthropic. Anche le impostazioni del repository hanno dei limiti: le sessioni che coinvolgono più repository non caricano le regole di autorizzazione e gli hook di ciascuno. Controlla i criteri effettivi dell'ambiente cloud, senza dare per scontato che siano quelli del tuo terminale. Impostazioni nelle sessioni cloud

Scegli la modalità in base al lavoro

Di solito, il miglioramento più utile consiste nell'eliminare le approvazioni ripetitive da un flusso di lavoro già in uso. Queste sono le scelte pratiche, nell'ordine in cui le valuterei:

SituazioneFlusso di lavoro da scegliereVantaggio
Uno sviluppatore corregge un bug in un'app che conosceModalità auto, poi controllo del diff e dei risultati dei testMeno attenzione spesa ad approvare i passaggi di routine
Un manutentore esegue spesso test attendibiliRegole allow precise per i comandi di test e lintApprovazioni prevedibili senza autorizzare qualsiasi comando della shell
Un team pianifica un refactoring che coinvolge più moduliNuova sessione plan, revisione della proposta, poi approvazione dell'implementazioneIndividuare errori nell'ambito dell'intervento prima che le modifiche si estendano
Un team di piattaforma protegge un comando di deploymentUn validatore PreToolUse testato insieme a criteri gestitiApplicare la stessa regola di blocco a ogni esecuzione
Un responsabile della CI ha un'attività prestabilitadontAsk e un elenco esplicito di autorizzazioniLe operazioni impreviste falliscono invece di attendere una persona
Un manutentore lavora senza supervisione in un ambiente usa e gettaContainer con utente non root e rete limitata; bypass solo al suo internoCompletare l'attività circoscritta, poi esaminare o scartare il checkout

Per il caso della CI, claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read" è il punto di partenza documentato da Anthropic. Nega le operazioni che altrimenti richiederebbero una conferma. Configurazioni comuni

Qualunque modalità tu scelga, affiancale le nostre buone pratiche per Claude Code. I permessi regolano l'esecuzione; la verifica stabilisce se il risultato merita di essere conservato.

Due strumenti utili che un team potrebbe sviluppare

L'opportunità più solida è un verificatore della configurazione dei permessi. DataForSEO stima 720 ricerche al mese negli Stati Uniti per «claude code permissions». Il dato segnala una difficoltà nel trovare le informazioni, non un'intenzione d'acquisto dimostrata. Un team che gestisce la piattaforma di sviluppo potrebbe creare un piccolo verificatore che spieghi l'ambito delle impostazioni, segnali i valori di defaultMode ignorati e mostri in anteprima l'effetto delle regole troppo ampie sui comandi, prima di introdurre lo strumento ai colleghi. Il primo risultato utile sarebbe un report con le modifiche suggerite. La difficoltà è mantenerlo aggiornato mentre cambia il comportamento della configurazione di Claude Code.

Un launcher per esecuzioni in ambienti usa e getta potrebbe servire ai team con attività ripetute senza supervisione. La stessa analisi della domanda stima 260 ricerche al mese negli Stati Uniti per «claude code docker». Un MVP potrebbe verificare un modello di container già esaminato, i mount consentiti, l'esecuzione senza root e i criteri sul traffico in uscita, per poi raccogliere diff e log da consegnare al manutentore. Il valore starebbe nella coerenza della configurazione. Il limite è che un launcher non può rendere sicuro il codice di un repository non attendibile né garantire l'isolamento per il solo fatto che ci sia Docker.

Entrambe sono opportunità per strumenti interni da validare con utenti reali. Nessuna delle due richiede di rendere il bypass la modalità predefinita sui computer degli sviluppatori.

Che cosa fa dangerously skip permissions in Claude?

Attiva bypassPermissions, eliminando le approvazioni di routine degli strumenti e consentendo le scritture nei percorsi protetti. I blocchi espliciti e le protezioni documentate che impongono un'interazione restano rilevanti. Leggi le distinzioni spiegate sopra prima di dare per scontato che un'esecuzione non possa fermarsi.

Come evitare che Claude chieda continuamente i permessi?

Per il normale lavoro di sviluppo, prova claude --permission-mode auto. Per un flusso di lavoro prevedibile, autorizza in anticipo i comandi verificati con permissions.allow, mantieni divieti specifici e usa gli hook quando servono controlli sui comandi. La modalità plan è adatta all'esplorazione prima delle modifiche.

Come si saltano i controlli dei permessi in Claude Code?

Solo dopo aver predisposto un ambiente isolato, avvia al suo interno claude --dangerously-skip-permissions. claude --permission-mode bypassPermissions è equivalente. Segui la configurazione del devcontainer con utente non root descritta sopra; non aggiungere alla shell di tutti i giorni un alias che attivi sempre il bypass.

Da mettere in pratica lunedì: scegli un flusso di lavoro ripetitivo, esamina i comandi che esegue davvero e configura la politica di approvazione minima che gli consenta di arrivare in fondo. Passa a un container usa e getta solo quando l'attività richiede un'esecuzione senza supervisione che vada oltre quella politica.

Se al tuo team serve qualcuno che costruisca e mantenga questo flusso di lavoro, possiamo aiutarti con i nostri sistemi AI in produzione.

Pubblicato
Categoria
Build
Cursor vs VSCode: quando conviene cambiare editor nel 2026

Cursor vs VSCode: quando conviene cambiare editor nel 2026

Cursor o VS Code? Confronta agenti AI, Tab, estensioni, privacy e prezzi per capire se cambiare editor porta vantaggi concreti al tuo lavoro di sviluppo.18 ott 2026Build
n8n self hosting e Cloud: a chi conviene davvero

n8n self hosting e Cloud: a chi conviene davvero

Recensione di n8n self hosting e Cloud: costi, agenti AI, limiti di Community e manutenzione. Scopri quando conviene e quando scegliere Zapier o Make.18 ott 2026Build
Render hosting o Railway? Prezzi e limiti nel 2026

Render hosting o Railway? Prezzi e limiti nel 2026

Render hosting o Railway? Confronta prezzi, piani gratuiti, Postgres, worker e scalabilità con un esempio di spesa per scegliere dove ospitare la tua app.18 ott 2026Build
Pydantic AI: guida agli agenti Python con output validati

Pydantic AI: guida agli agenti Python con output validati

Come usare Pydantic AI per creare agenti Python con tool e output validati: tutorial, valutazioni e criteri per scegliere il framework adatto al tuo progetto.17 ott 2026Build
Guardrail AI: come controllare risposte e azioni degli agenti

Guardrail AI: come controllare risposte e azioni degli agenti

Come funzionano i guardrail AI: un esempio di rimborso, strumenti a confronto e controlli minimi per gestire dati, permessi e azioni degli agenti.17 ott 2026Build
Allucinazioni dell'intelligenza artificiale: capire e ridurre gli errori degli LLM

Allucinazioni dell'intelligenza artificiale: capire e ridurre gli errori degli LLM

Perché gli LLM inventano fatti, numeri e citazioni e come ridurre gli errori con fonti aggiornate, controlli sui dati e test prima di rispondere ai clienti.17 ott 2026Build
System prompt ChatGPT: esempi, modello e differenze tra API

System prompt ChatGPT: esempi, modello e differenze tra API

Scopri come funzionano le istruzioni per ChatGPT, Claude e Gemini, cosa includere e quali limiti hanno. Con esempi e un modello di system prompt da adattare.17 ott 2026Build
Function calling: guida pratica con un esempio Python completo

Function calling: guida pratica con un esempio Python completo

Come funziona il function calling: un esempio Python completo, le differenze tra OpenAI, Anthropic e Gemini e quando bastano gli output strutturati.17 ott 2026Build
Newsletter

Una lettera, ogni domenica.Sistemi che funzionano, non hot take.

Settimanale. Niente spam. Si cancella quando vuole.