Die 3 Hürden beim Erststart von Claude Code im Docker-Container
Ein frischer Claude-Code-Agent stoppt nacheinander beim Onboarding, der Verzeichnis-Vertrauensfrage und der API-Key-Bestätigung. In automatisierten Umgebungen müssen diese Werte vorab in ~/.claude.json geschrieben werden.
Ein Agent, der ein Banner ausgibt und wartet, erzeugt Bytes, die im Log wie Erfolg aussehen. In einem neuen Container stoppt Claude Code dreimal vor jeder eigentlichen Arbeit.
Die drei Hürden in zeitlicher Abfolge
| Schritt | Abfrageinhalt |
|---|---|
| Ersteinrichtungs-Assistent | Auswahl des Farbschemas / Themes |
| Workspace-Vertrauensprüfung | Vertrauen Sie diesem Projektverzeichnis? |
| API-Key-Bestätigung | Möchten Sie diesen API-Schlüssel verwenden? |
Unvollständige Vorkonfigurationen lassen den Agenten an der nächsten Hürde stranden.
Messmatrix aus der Praxis
Gemessen mit claude 2.1.220 in einer frischen HOME-Umgebung:
| Gesetzte Konfiguration | Verhalten des Agenten |
|---|---|
| Keine | Blockiert bei Theme-Auswahl |
| Nur theme in settings.json | Weiterhin blockiert bei Theme-Auswahl |
| hasCompletedOnboarding in .claude.json | Erreicht Vertrauensdialog |
| + hasTrustDialogAccepted für aufgelösten Pfad | Erreicht Prompt ("Not logged in") |
| + ANTHROPIC_API_KEY in Umgebung | Blockiert bei API-Key-Bestätigung |
| + customApiKeyResponses.approved | Voll einsatzbereit |
Die Falle mit relativen Pfaden
Pfadangaben in ~/.claude.json müssen zwingend kanonisch aufgelöst sein (ohne Symlinks).
export function trustKeyFor(root: string): string {
try {
return realpathSync(root);
} catch {
return root;
}
}Die Bestätigung des Schlüssels
Die Key-Abfrage wählt standardmäßig 2. No (recommended). Das CLI speichert die letzten 20 Zeichen als Genehmigungs-Token.
export function approvalTokenFor(apiKey: string): string {
return apiKey.slice(-20);
}Unwirksame Abkürzungen
Der Parameter --permission-mode bypassPermissions umgeht den Vertrauensdialog nicht.
Ein Theme ist Kosmetik. Das Löschen von Dateien ist eine kritische Entscheidung.
Wir automatisieren die Einrichtung, belassen sensible Werkzeugfreigaben jedoch unter menschlicher Kontrolle.
const trust: ProjectTrust = {
hasTrustDialogAccepted: true,
hasCompletedProjectOnboarding: true,
projectOnboardingSeenCount: 0,
allowedTools: [],
};Die Cloud-Ausführung wird in Claude Code in der Cloud ausführen beschrieben, die Verbindungskontrolle in ein Terminal beobachten.
Direkte Antworten
Warum bleibt Claude Code beim ersten Start im Container hängen?
Weil das CLI auf manuelle Eingaben zur Theme-Wahl, Verzeichnis-Freigabe und Key-Bestätigung wartet.
Wie startet man Claude Code vollautomatisch?
Indem Onboarding- und Trust-Zustände vorab in ~/.claude.json abgelegt und API-Schlüssel über Umgebungsvariablen bereitgestellt werden.
Wie wurden diese Erkenntnisse gewonnen?
Durch empirische PTY-Tests mit Claude Code 2.1.220 und Analyse der geschriebenen Konfigurationsdateien.