Ho Messo il Mio Assistente AI per il Coding in un Container Docker: Non Tornerò Mai Più Indietro
Perché Eseguo il Mio Assistente di Codifica AI in un Container Docker (E Perché Dovresti Farlo Anche Tu)
Siamo onesti riguardo agli agenti AI per la programmazione. O hai disattivato tutti i freni di sicurezza e lasciato che il tuo agente faccia quello che vuole sulla tua macchina, oppure sei lì che clicchi "Approva" ogni trenta secondi come se stessi disinnescando una bomba. Entrambi gli approcci fanno schifo, ognuno a modo suo.
Io ero quello che cliccava approva. Ed onestamente? Era il comportamento di un adulto responsabile. Ma era un peso pazzesco sulla mia produttività. Ogni volta che Claude Code voleva eseguire un comando bash, installare un pacchetto, o modificare un file, venivo strappato via dal mio stato di flow per badare al processo.
Poi ho visto amici andare nella direzione opposta—modalità completamente YOLO, niente vincoli, solo vibes e preghiera. Ed onestamente, questo mi spaventava ancora di più. Questi agenti sono potenti, ma sono anche abbastanza autonomi da fare danni reali se qualcosa va storto.
La via di mezzo che ha cambiato tutto per me: mettere l'agente di codifica in un container.
L'Idea di Base
Invece di eseguire il tuo assistente AI direttamente sulla macchina host, lo fai partire dentro un container Docker con la directory di lavoro montata. L'agente fa il suo lavoro dentro il container, dove le sue capacità distruttive sono contenute. Se decide di cancellare tutto? Figurati—cancella il filesystem del container, non la tua macchina vera.
Questo significa che puoi davvero usare le funzionalità in modalità YOLO come --dangerously-skip-permissions senza il terrore esistenziale di guardare sparire la tua home directory.
Ti faccio vedere come funziona.
Configurare Claude Code in Docker
La configurazione più semplice parte da un Dockerfile. Ecco cosa ti serve:
FROM node:20-bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates && rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://claude.ai/install.sh | bash
ENV PATH="/root/.local/bin:${PATH}"
WORKDIR /workspace
ENTRYPOINT ["claude", "--dangerously-skip-permissions"]
Buildalo una volta:
docker build -t claude-code .
Poi eseguilo con la tua directory corrente montata:
docker run -it -v "$PWD:/workspace" claude-code
E così, hai Claude Code in esecuzione con accesso ai file del tuo progetto. Il container può leggere, scrivere ed eseguire liberamente all'interno del workspace, ma è isolato dal tuo sistema reale.
Il Problema dell'Autenticazione
Qui le cose si fanno interessanti. Su Mac, Claude Code salva le credenziali in Keychain. I container Linux non parlano Keychain. Quindi devi gestire l'autenticazione in modo diverso.
La soluzione è passare un token API come variabile d'ambiente. Prima, recupera il tuo setup token:
claude setup-token
Poi crea un piccolo script di entrypoint che legge questo token e configura il file credenziali del container:
#!/bin/bash
echo "${ANTHROPIC_TOKEN}" > /root/.claude/credentials.json
exec claude --dangerously-skip-permissions
Ora quando esegui il container, passi semplicemente il token:
docker run -it -v "$PWD:/workspace" -e ANTHROPIC_TOKEN="$(claude setup-token)" claude-code
Renderlo Davvero Conveniente
Siamo reali—non vuoi digitare tutto questo ogni volta. Crea un alias o una funzione shell:
cc() {
docker run -it \
-v "$PWD:/workspace" \
-v "$HOME/.claude:/root/.claude" \
-v "$HOME/.claude/skills:/root/.claude/skills" \
-v "$HOME/.claude/settings.json:/root/.claude/settings.json:ro" \
-e ANTHROPIC_TOKEN="$(claude setup-token 2>/dev/null)" \
--env-file ~/.claude/env \
claude-code "$@"
}
Questa configurazione:
- Monta la tua directory corrente come
/workspace - Passa la tua configurazione Claude e le skills
- Carica le variabili d'ambiente (utile per le API key che l'agente potrebbe servirsene)
- Ti permette di chiamare
ccda qualsiasi posto e avere immediatamente un assistente di codifica funzionante
Cosa Questo NON Ti Protegge Da
Voglio essere super chiaro sul modello di minaccia qui. La containerizzazione protegge la tua macchina host dalle azioni dell'agente. NON ti protegge da:
- Attacchi di prompt injection: Se un attaccante può influenzare ciò che l'agente vede, potrebbe ingannarlo per esfiltrare il tuo codice o i tuoi segreti
- Esposizione di API key: L'agente ha ancora accesso a qualsiasi chiave che può leggere nel workspace o nell'ambiente
- Attacchi via rete: Il container ha ancora accesso alla rete
- Problemi della supply chain: I pacchetti malevoli che l'agente installa nel container restano comunque malevoli
Quello che ottieni è protezione contro "ops, l'agente ha cancellato la mia home directory" oppure "ha eseguito rm -rf / e adesso sono finito." Per me, questo è valso la pena del lavoro di setup più di una volta.
È Troppo?
Onestamente? Dipende da cosa stai facendo. Per script veloci e task occasionali, uso ancora Claude Code direttamente con i normali prompt di permesso. Ma per sviluppo serio di features, lavoro di refactoring, o quando sto lavorando in una repo che mi sta a cuore? La configurazione con container mi ha fatto risparmiare ore di click approvativi e mi ha dato una vera tranquillità.
Il bello è che una volta capita l'idea, puoi adattarla. Agenti di codifica diversi avranno diversi gotchas—posizioni delle credenziali, formati di configurazione, requisiti di entrypoint—ma il principio di base resta lo stesso: isola l'agente, dagli accesso controllato al tuo lavoro, e lascialo girare senza che tu gli stia col fiato sul collo.
Per Concludere
Siamo in un periodo di transizione interessante con gli strumenti AI per la programmazione. Le impostazioni di sicurezza predefinite sono conservative per buone ragioni—questi agenti sono potenti e autonomi. Ma le impostazioni conservative spesso significano "progettato per persone che stanno provando lo strumento" piuttosto che "progettato per l'uso professionale quotidiano."
La containerizzazione è un modo per colmare quel divario. Non è sicurezza perfetta, ma è una protezione pratica che ti permette di catturare davvero i guadagni di produttività che questi strumenti offrono senza giocare a whack-a-mole con i permessi.
Provalo. Una volta che hai l'alias configurato e chiami cc dal terminale per avere un assistente di codifica completamente carico in pochi secondi, non tornerai indietro.
Qual è la tua configurazione per eseguire agenti AI di codifica? Stai ancora cliccando approva? Sei completamente YOLO? Hai un trucco di containerizzazione che mi sono perso? Mi piacerebbe sapere come altri stanno gestendo questo equilibrio.