본문 바로가기
AI/Claude code

[Claude Code] Claude Code 실행 직후 종료되는 문제

by Machine-Geon 2026. 2. 9.
반응형

환경

  • OS: Rocky Linux 8 (RHEL 8 계열)
  • Node.js: v20.20.0
  • Claude Code: v2.1.37
  • 접속 방식: SSH (Termius, macOS Terminal)

증상

Claude Code를 실행하면 Welcome 화면이 정상적으로 렌더링된 후, 아무 입력도 하기 전에 1초 이내로 즉시 종료된다. exit code는 0으로, 크래시가 아닌 정상 종료로 처리된다.

[root@localhost opt]# claude

╭─── Claude Code v2.1.37 ───────────────────────╮
│    Welcome back!                               │
│    Opus 4.6 · Claude Max                       │
╰────────────────────────────────────────────────╯

❯ Try "fix lint errors"

[root@localhost opt]#   ← 아무것도 안 했는데 바로 종료

/login 화면까지 표시되지만, 선택지를 누를 틈도 없이 꺼지기 때문에 로그인 자체가 불가능한 상황이었다.

시행착오

1. 디스크 용량 부족 의심

처음에는 / 파티션이 100%로 가득 차 있었다. Docker 이미지와 로그가 원인이었고, dnf clean all, npm cache clean --force, journalctl --vacuum-size=100M 등으로 5.7GB를 확보했다. 하지만 용량 확보 후에도 동일한 증상이 계속됐다.

2. 터미널 호환성 의심

SSH 클라이언트(Termius)가 보내는 focus event(^[[I)가 TUI를 죽이는 것으로 의심했다. printf '\\e[?1004l'로 focus reporting을 비활성화하거나, script, expect 등으로 우회를 시도했지만 해결되지 않았다. macOS 기본 터미널에서 SSH 접속해도 동일하게 종료되어 터미널 문제가 아님을 확인했다.

3. 인증 문제 의심

설정 초기화(rm -rf ~/.claude) 후 "Not logged in" 상태가 되면서 인증 문제로 방향을 잡았다. macOS Keychain에 저장된 OAuth 토큰은 파일 복사로 이전할 수 없었고, headless 서버에서는 브라우저 기반 OAuth 로그인 자체가 어려웠다. 하지만 원래 로그인된 상태에서도 꺼졌기 때문에 인증이 근본 원인은 아니었다.

4. strace로 원인 추적

strace로 프로세스를 추적한 결과, read(0, "", 4096) = 0이 확인됐다. stdin이 EOF를 받아서 종료되는 것이었다. 모든 프로세스가 exit code 0으로 정상 종료되고 있었고, 크래시가 아니라 TUI 스스로 종료하는 동작이었다.

5. 다운그레이드 시도

GitHub에서 동일한 이슈(#12084)를 발견했다. RHEL8에서 v2.0.43부터 발생하는 알려진 버그로, v2.0.42로 다운그레이드하면 동작한다는 내용이었다. 다운그레이드 후 실행은 됐지만, 근본 원인은 따로 있었다.

원인

Git 저장소가 아닌 디렉토리에서 Claude Code를 실행하면 TUI가 즉시 종료된다.

Claude Code는 시작 시 git 정보(브랜치, 변경사항 등)를 수집하는데, git repo가 아닌 디렉토리에서 이 과정이 실패할 때 RHEL8/Rocky Linux 환경에서는 예외 처리가 제대로 되지 않아 TUI 이벤트 루프가 깨지고 종료된다.

나는 /opt 디렉토리에서 실행하고 있었는데, 이 디렉토리는 git 저장소가 아니었다.

해결

# 방법 1: 해당 디렉토리에서 git init
cd /opt
git init

# 방법 2: 기존 git 프로젝트 디렉토리에서 실행
cd /opt/your-project  # git repo가 있는 경로
claude

git 저장소 안에서 실행하면 최신 버전에서도 정상 동작한다. 애초에 코딩 도구이니 프로젝트 디렉토리에서 실행하는 게 자연스럽긴 하지만, git repo가 아닌 곳에서 실행했을 때 아무 에러 메시지 없이 종료되는 건 명확한 버그다.

참고

반응형