3 проблемы при первом запуске Claude Code в Docker-контейнере
Новый экземпляр Claude Code останавливается на трех этапах: онбординг, доверие к директории и подтверждение API-ключа. В автоматическом режиме их необходимо заранее записать в ~/.claude.json.
Агент, выводящий баннер и ожидающий ввода, генерирует байты, создавая иллюзию активности в логах. В новом контейнере Claude Code останавливается трижды.
Три барьера в хронологическом порядке
| Шаг | Запрос |
|---|---|
| Мастер первого запуска | Выбор цветовой темы |
| Проверка доверия к директории | Доверяете ли вы этой папке проекта? |
| Подтверждение API-ключа | Хотите ли вы использовать данный API-ключ? |
Частичная настройка оставляет процесс заблокированным на следующем этапе.
Таблица практических измерений
Замеры для claude 2.1.220 в чистом HOME-окружении:
| Внесенная конфигурация | Поведение агента |
|---|---|
| Без конфигурации | Блокировка на выборе темы |
| Только theme в settings.json | Все еще блокировка на выборе темы |
| hasCompletedOnboarding в .claude.json | Переход к диалогу доверия |
| + hasTrustDialogAccepted для канонического пути | Выход в командную строку ("Not logged in") |
| + ANTHROPIC_API_KEY в окружении | Блокировка на подтверждении ключа |
| + customApiKeyResponses.approved | Полная готовность к работе |
Ловушка канонических путей
Пути в ~/.claude.json должны быть строго каноническими, без символических ссылок.
export function trustKeyFor(root: string): string {
try {
return realpathSync(root);
} catch {
return root;
}
}Подтверждение ключа
По умолчанию диалог ключа выбирает 2. No (recommended). CLI сохраняет последние 20 символов как токен одобрения.
export function approvalTokenFor(apiKey: string): string {
return apiKey.slice(-20);
}Неработающие решения
Флаг --permission-mode bypassPermissions не отключает проверку доверия к директории.
Тема — это оформление. Удаление файла — ответственное решение.
Мы автоматизируем старт окружения, но сохраняем защиту на потенциально опасных операциях.
const trust: ProjectTrust = {
hasTrustDialogAccepted: true,
hasCompletedProjectOnboarding: true,
projectOnboardingSeenCount: 0,
allowedTools: [],
};О запуске в облачной среде читайте в запуск Claude Code в облаке, а о контроле соединений — в наблюдение за удаленным терминалом.
Прямые ответы
Почему Claude Code зависает при первом старте в контейнере?
Он ожидает интерактивных ответов по выбору темы, доверию к папке и подтверждению ключа API.
Как запускать Claude Code неинтерактивно?
Записав параметры онбординга и доверия в ~/.claude.json до старта и передав ключ через переменные окружения.
Как проводились замеры?
На реальных PTY с версией Claude Code 2.1.220 путем анализа генерируемых файлов конфигурации.