I 3 ostacoli al primo avvio di Claude Code in un container Docker
Un’istanza pulita di Claude Code si arresta su tre schermate: onboarding, autorizzazione cartella e conferma chiave API. In ambienti automatizzati è necessario preconfigurarle in ~/.claude.json.
Un agente che stampa un banner e si ferma continua a emettere byte. In un container nuovo, Claude Code si arresta tre volte prima di compiere qualsiasi operazione.
I tre blocchi in ordine cronologico
| Passaggio | Richiesta |
|---|---|
| Assistente iniziale | Scelta del tema grafico |
| Fiducia nel workspace | Conferma attendibilità cartella |
| Conferma chiave API | Autorizzazione utilizzo chiave API |
Risolvere solo parte dei requisiti lascia l’agente bloccato al passaggio successivo.
Matrice delle misurazioni reali
Dati verificati con claude 2.1.220 in ambiente pulito:
| Configurazione iniettata | Comportamento agente |
|---|---|
| Nessuna | Blocco sul selettore tema |
| Solo theme in settings.json | Ancora blocco sul selettore tema |
| hasCompletedOnboarding in .claude.json | Avanza alla conferma cartella |
| + hasTrustDialogAccepted sul percorso risolto | Raggiunge prompt ("Not logged in") |
| + ANTHROPIC_API_KEY nell’ambiente | Blocco su autorizzazione chiave |
| + customApiKeyResponses.approved | Pronto all’uso |
Il problema dei percorsi reali
I percorsi in ~/.claude.json devono essere canonici e risolti, senza symlink.
export function trustKeyFor(root: string): string {
try {
return realpathSync(root);
} catch {
return root;
}
}La conferma della chiave
La conferma della chiave usa come default 2. No (recommended). Il CLI memorizza gli ultimi 20 caratteri come token di approvazione.
export function approvalTokenFor(apiKey: string): string {
return apiKey.slice(-20);
}Scorciatoie inefficaci
Il flag --permission-mode bypassPermissions non scavalca la conferma di fiducia della cartella.
Un tema è estetica. Cancellare un file è una decisione critica.
Automatizziamo l’avvio ma preserviamo le protezioni sulle operazioni distruttive.
const trust: ProjectTrust = {
hasTrustDialogAccepted: true,
hasCompletedProjectOnboarding: true,
projectOnboardingSeenCount: 0,
allowedTools: [],
};L’esecuzione nel cloud è spiegata in eseguire Claude Code nel cloud, e la gestione della connessione in osservare un terminale remoto.
Risposte dirette
Perché Claude Code si blocca al primo avvio nel container?
Perché attende scelte interattive su tema, fiducia nella cartella e chiave API.
Come eseguire Claude Code in modo non interattivo?
Precaricando ~/.claude.json con i parametri di onboarding e cartella e impostando le chiavi nelle variabili d’ambiente.
Come sono stati ottenuti questi dati?
Tramite test empirici con Claude Code 2.1.220 su veri pty.