아티클

Docker 컨테이너 환경에서 Claude Code 첫 실행 시 발생하는 3가지 문제와 해결책

새 컨테이너의 Claude Code는 온보딩, 디렉터리 신뢰, API 키 확인에서 정지합니다. 무인 환경에서는 ~/.claude.json에 사전 설정을 주입해야 합니다.

배너를 출력하고 대기 중인 에이전트도 바이트를 방출하므로 로그상 정상처럼 보이지만 실제로는 입력을 기다리며 멈춰 있습니다.

Three gates in a row. An agent passes the first two and stops at the third.onboardingtrustapi keya fresh container
순서는 고정되어 있습니다. 앞의 두 개를 통과해도 세 번째에서 멈춥니다.

순서대로 마주치는 3가지 관문

단계질문 내용
초기 설정 마법사텍스트 테마 선택
워크스페이스 신뢰 확인이 프로젝트를 신뢰합니까?
API 키 확인이 API 키를 사용하시겠습니까?

일부만 해결하면 다음 관문에서 멈추게 됩니다.

실측 비교 매트릭스

깨끗한 HOME 환경에서 claude 2.1.220으로 측정한 결과:

사전 설정에이전트 동작
설정 없음테마 선택에서 멈춤
settings.json에 theme만 설정여전히 테마 선택에서 멈춤
.claude.json에 hasCompletedOnboarding 설정신뢰 확인 대화상자로 진행
+ 확인된 경로에 hasTrustDialogAccepted 설정프롬프트 진입 ("Not logged in")
+ 환경 변수 ANTHROPIC_API_KEY 설정API 키 확인에서 멈춤
+ customApiKeyResponses.approved 설정즉시 작업 가능 상태 진입

심볼릭 링크 해결의 함정

~/.claude.json의 경로는 반드시 실제 정규화된 경로(canonical)여야 합니다.

export function trustKeyFor(root: string): string {
  try {
    return realpathSync(root);
  } catch {
    return root;
  }
}

API 키 승인의 복병

API 키 확인은 기본값이 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에 온보딩 및 신뢰 설정을 작성하고 환경 변수로 키를 전달합니다.

어떻게 측정되었나요?

Claude Code 2.1.220 버전으로 실제 PTY 환경에서 생성 파일을 분석하여 측정했습니다.