AIFreeAPI Logo

Claude Code 로그인 오류 해결: Invalid code, 403, 500 구분하기

A
7 min readClaude Code

브라우저에 승인 완료가 표시돼도 터미널 로그인이 끝난 것은 아닙니다. 오류가 발생한 화면과 시점을 기준으로 인증 코드, 계정 권한, 요청 실패를 나누어 해결합니다.

Claude Code의 Invalid code·403·500 로그인 오류와 브라우저·터미널 인증, 복구 확인 방법을 정리한 안내

Claude Code에 로그인할 때는 어느 단계에서 실패했는지 먼저 확인해야 합니다. 인증 코드를 넣자마자 Invalid code가 뜬 경우와, 로그인 후 첫 질문에서 403 Forbidden이 뜬 경우는 조치가 다릅니다. 500도 브라우저의 OAuth 승인 화면에서 발생했는지, 터미널에서 모델을 호출하다 발생했는지 구분하세요.

오류 문구와 발생 시각, 당시 사용한 터미널을 남긴 뒤 아래에서 해당하는 경우로 이동하면 됩니다. 브라우저가 열렸거나 승인 버튼을 눌렀다는 사실만으로는 복구 여부를 판단할 수 없습니다. 마지막에는 원래 실패하던 환경에서 원하는 계정으로 작은 요청 하나가 성공하는지 확인해야 합니다.

오류가 나타난 시점우선 확인할 사항첫 조치
브라우저에서 받은 코드를 입력한 직후 Invalid code오래된 코드 또는 일부만 복사된 코드로그인을 새로 시작하고 새 코드 전체 입력
WSL·SSH·컨테이너에서 브라우저 승인 후 터미널이 대기브라우저와 CLI가 실행되는 컴퓨터가 다름표시된 URL을 로컬 브라우저에서 열고 코드는 원래 터미널에 입력
로그인은 됐지만 403 Forbidden실제 사용 중인 인증, 구독 또는 조직 권한, 회사 프록시/status에서 인증을 확인하고 해당 계정의 권한 확인
로그인 승인 페이지에서 500로그인 단계의 서버 응답 또는 접속 경로장애 공지와 발생 시각을 확인한 뒤 새 로그인 시도
질문을 보낸 뒤 API Error: 500실제 요청을 받는 서비스의 내부 오류해당 제공자의 상태 확인 후 잠시 기다렸다 재시도
Claude Code 로그인 오류를 구분하고 인증과 실행 환경을 확인해 복구하는 방법
Claude Code 로그인 오류를 구분하고 인증과 실행 환경을 확인해 복구하는 방법

Invalid code: 이전 코드를 다시 붙여넣지 마세요

공식 문서는 OAuth error: Invalid code의 원인으로 코드 만료와 잘린 코드를 안내합니다. 정확히 몇 초 안에 입력해야 하는지는 명시하지 않으므로, 특정 제한 시간을 맞추기보다 새 로그인에서 발급된 코드 전체를 지체 없이 입력하는 것이 핵심입니다. 공식 Invalid code 안내

  1. 오류 화면의 안내에 따라 Enter를 눌러 로그인을 다시 시작합니다.
  2. 새로 표시된 로그인 URL을 엽니다. 터미널에서 URL이 줄바꿈되어 복사하기 어렵다면 해당 화면의 c 복사 기능으로 전체 URL을 가져옵니다.
  3. 브라우저에서 사용할 계정으로 로그인하고 승인을 완료합니다.
  4. 코드 입력이 필요하면 방금 받은 코드 전체를, 지금 로그인을 진행 중인 터미널에 붙여넣습니다.

여러 터미널이나 브라우저 탭에서 동시에 로그인을 진행했다면 어느 코드가 어느 시도에 해당하는지 헷갈리기 쉽습니다. 사용할 터미널 하나를 정해 새로 진행하세요. 이때의 인증 코드는 API 키가 아닙니다. ANTHROPIC_API_KEY에 저장하거나 지원 게시판에 올릴 값도 아닙니다.

Windows·WSL·SSH에서 브라우저만 완료된 경우

브라우저가 실행되는 로컬 컴퓨터와 Claude Code가 실행되는 원격 서버·컨테이너는 서로 다른 환경일 수 있습니다. 자동으로 터미널에 결과를 돌려주는 연결이 닿지 않아도 수동 코드 입력으로 진행할 수 있습니다.

Claude Code가 표시한 URL을 로컬 브라우저에서 열고, 브라우저에 표시된 코드는 로그인을 시작한 원래 터미널에 입력하세요. SSH 서버 대신 로컬 PowerShell에 코드를 붙여넣으면 원격 세션의 로그인은 끝나지 않습니다. WSL에서도 현재 입력을 기다리는 세션을 확인하세요. 원격 환경이라는 이유만으로 API 키를 새로 발급할 필요는 없습니다. WSL2·SSH·컨테이너 로그인 안내

붙여넣어도 입력이 잡히지 않는다면 해당 터미널의 붙여넣기 기능을 사용해 보세요. 예를 들어 Windows Terminal에서는 Ctrl+Shift+V를 사용할 수 있습니다. 대화형 화면에서 계속 입력이 되지 않으면 일반 셸로 돌아와 다음 명령으로 로그인할 수 있습니다. 이 명령은 표준 입력으로 코드를 받습니다.

bash
claude auth login
브라우저 승인 뒤 원래 터미널에 인증 코드를 입력하는 과정과 오류 시점별 복구 확인
브라우저 승인 뒤 원래 터미널에 인증 코드를 입력하는 과정과 오류 시점별 복구 확인

403: 재로그인보다 먼저 실제 인증과 권한을 확인하세요

403은 요청이 거절됐다는 응답입니다. 이 코드만으로 인증 코드 만료나 계정 정지라고 단정할 수 없습니다. 브라우저에서 방금 로그인한 계정과 CLI가 실제 요청에 사용하는 인증이 일치하는지 먼저 확인하세요.

Claude Code의 대화형 세션에서 다음을 입력합니다.

text
/status

그다음 사용하는 방식에 맞춰 확인합니다.

  • 개인 Pro·Max 구독으로 로그인했다면: 로그인한 계정에 활성 구독이 있는지 확인합니다. 다른 이메일이나 브라우저 계정으로 승인했는지도 살펴보세요.
  • Anthropic Console 계정이라면: 조직의 Settings → Members에서 자신의 역할을 확인합니다. 공식 403 안내는 Claude Code 또는 Developer 역할을 확인하도록 안내합니다. 권한 변경이 필요하면 조직 관리자에게 요청하세요.
  • 회사 네트워크에서만 실패한다면: 프록시가 요청을 차단하거나 변경하는지 네트워크 담당자에게 확인합니다. 계정 설정을 바꾸기 전에 같은 시각의 차단 기록을 대조하는 편이 낫습니다.

이 항목들은 로그인 후 403에 대한 공식 안내에 근거합니다. 2026년 9월 6일 확인한 지원 국가 목록에는 대한민국이 포함돼 있습니다. 다만 한국어를 쓰거나 한국에 있다는 사실만으로 구독·조직 권한까지 확인되는 것은 아닙니다. 실제 접속 지역이 다르다면 그 지역의 지원 여부를 따로 확인하세요.

명시적인 계정 정지 또는 조직 비활성화 알림을 받았다면 일반적인 코드 재입력으로 해결할 문제가 아닐 수 있습니다. 그 경우에는 Claude 계정 정지와 이의 제기 안내에서 알림에 맞는 절차를 확인하세요.

구독으로 로그인했는데 API 키가 적용될 수 있습니다

ANTHROPIC_API_KEY가 있으면 모든 실행 방식에서 무조건 같은 순서로 적용된다고 설명하는 것은 부정확합니다. 현재 공식 문서 기준으로 대화형 세션에서는 사용을 승인한 API 키가 구독 OAuth보다 우선하고, -p 실행에서는 변수가 존재하면 API 키가 사용됩니다. ANTHROPIC_AUTH_TOKEN, 외부 제공자 선택, 게이트웨이 설정도 사용되는 인증에 영향을 줍니다. 인증 우선순위 공식 문서

아래 명령은 관련 변수의 이름과 설정 여부만 출력합니다. 값을 보여 주는 env, printenv, 전체 환경 변수 덤프를 그대로 공유할 필요는 없습니다. 반드시 Claude Code를 실행하는 셸에서 확인하세요.

macOS·Linux·WSL의 Bash 또는 Zsh:

bash
for name in ANTHROPIC_API_KEY ANTHROPIC_AUTH_TOKEN CLAUDE_CODE_OAUTH_TOKEN ANTHROPIC_BASE_URL CLAUDE_CODE_USE_BEDROCK CLAUDE_CODE_USE_VERTEX CLAUDE_CODE_USE_FOUNDRY; do if printenv "$name" >/dev/null 2>&1; then printf '%s: 설정됨\n' "$name" else printf '%s: 없음\n' "$name" fi done

Windows PowerShell:

powershell
$names = @( 'ANTHROPIC_API_KEY', 'ANTHROPIC_AUTH_TOKEN', 'CLAUDE_CODE_OAUTH_TOKEN', 'ANTHROPIC_BASE_URL', 'CLAUDE_CODE_USE_BEDROCK', 'CLAUDE_CODE_USE_VERTEX', 'CLAUDE_CODE_USE_FOUNDRY' ) foreach ($name in $names) { $state = if (Test-Path "Env:$name") { '설정됨' } else { '없음' } "${name}: $state" }

변수가 있다고 모두 잘못된 설정은 아닙니다. 예를 들어 회사 게이트웨이가 의도된 구성이라면 그대로 유지해야 합니다. 구독 OAuth를 사용하려는데 과거 테스트용 API 키가 남아 있는 경우처럼 불필요한 설정이 확인됐을 때만 해당 변수를 현재 셸에서 제거하세요.

bash
unset ANTHROPIC_API_KEY

PowerShell에서는 다음과 같습니다.

powershell
Remove-Item Env:ANTHROPIC_API_KEY -ErrorAction SilentlyContinue

Claude Code를 종료하고 같은 셸에서 다시 실행한 뒤 /status를 확인합니다. 새 터미널을 열 때 변수가 되살아나면 셸 시작 파일, PowerShell 프로필, IDE 실행 설정 또는 회사 관리 설정에서 어디서 주입되는지 확인해야 합니다. 위 명령은 그 영구 설정을 바꾸지 않습니다. API 키로 전환하는 것은 별도의 인증·결제 방식을 사용하는 것이므로 구독 오류가 해결됐다는 뜻도 아닙니다.

500: 로그인 승인과 모델 요청을 나누어 확인하세요

브라우저의 OAuth 승인 페이지가 500을 반환했다면 새 인증 코드를 받는 단계 자체가 실패했을 수 있습니다. 실제로 2026년 4월 7일에는 Claude Code 2.1.92의 로그인 승인 주소에서 500이 발생했다는 개별 GitHub 보고가 등록됐습니다. 이 기록은 현재 장애나 특정 버전의 해결을 증명하지는 않습니다.

해당 시각의 Claude 서비스 상태와 장애 이력에서 로그인 관련 공지를 확인하세요. 장애가 공지돼 있다면 복구 안내를 기다린 뒤 새로 로그인합니다. 공지가 없는데 반복된다면 실패한 화면, 시간대, CLI 버전, 회사 프록시 사용 여부를 남겨 문의하세요. 상태 페이지가 정상이라고 표시돼도 개별 요청의 성공까지 보장하지는 않습니다.

반면 로그인 후 질문을 보냈을 때 나오는 API Error: 500은 모델 요청 단계입니다. 공식 오류 안내는 내부 서비스 오류로 설명하며 상태 확인과 잠시 후 재시도를 권합니다. 이 경우 우선 재로그인하기보다 요청을 받은 제공자가 어디인지 확인하세요. ANTHROPIC_BASE_URL을 별도 게이트웨이로 설정했다면 그 게이트웨이의 장애와 로그도 확인해야 합니다.

회사 프록시 환경에서는 브라우저가 정상이라고 CLI도 같은 경로를 사용하는 것으로 보지 마세요. 현재 Claude Code는 HTTP(S) 프록시를 지원하며 https_proxy, HTTPS_PROXY, http_proxy, HTTP_PROXY 순으로 설정을 확인합니다. SOCKS 프록시는 지원하지 않습니다. 사내 인증서가 필요하면 관리자가 제공한 인증서를 NODE_EXTRA_CA_CERTS로 설정할 수 있습니다. TLS 검증을 끄는 방식으로 해결하지 말고 공식 네트워크 설정에 맞춰 담당자와 확인하세요.

인증이 반복해서 풀릴 때와 복구 확인

만료되거나 취소된 OAuth 인증이라면 우선 Claude Code에서 /login으로 다시 로그인하세요. 그래도 저장된 로그인 상태를 초기화해야 한다면 /logout을 실행하고, Claude Code를 종료한 뒤 다시 실행해 로그인합니다. 현재 /logout은 저장된 MCP 로그인과 플러그인의 민감한 설정값도 지울 수 있으므로, 이들 서비스의 재인증이 필요한지 미리 확인하세요. 전체 ~/.claude 폴더 삭제를 일반적인 해결책으로 삼을 필요는 없습니다. 로그인 초기화 안내

로그인 직후 다시 만료되는 일이 반복된다면 시스템 날짜·시간과 자동 시간 동기화를 확인하세요. macOS에서는 다음 명령의 Keychain 진단도 살펴볼 수 있습니다.

bash
claude doctor

Keychain에 쓰기가 거절되면 현재 CLI가 평문 인증 정보 저장으로 대체할 수 있습니다. 따라서 Keychain 문제가 있다는 사실을 곧바로 “인증 정보가 전혀 저장되지 않는다”로 해석하면 안 됩니다. 인증 파일을 열어 토큰을 복사하기보다 진단 결과를 바탕으로 저장 방식을 확인하세요. 반복되는 토큰 만료 안내

복구 여부는 다음처럼 확인하면 됩니다.

  1. 오류가 났던 같은 실행 환경에서 Claude Code를 새로 시작합니다. WSL 문제라면 WSL에서, SSH 문제라면 해당 원격 터미널에서 확인합니다.
  2. /status에서 의도한 인증 방식을 확인합니다.
  3. 빈 작업 폴더에서 파일 작업이 필요 없는 짧은 요청, 예를 들어 “OK라고만 답해 주세요”를 보냅니다. 응답이 오고 기존 인증 오류가 다시 나타나지 않는지 확인합니다. 이 요청도 사용하는 계정의 사용량·요금 조건에 따릅니다.

자동화의 -p 실행만 실패했다면 그 실행 환경에서도 따로 확인해야 합니다. 대화형 로그인이 성공해도 -p에 남아 있는 API 키 때문에 결과가 다를 수 있기 때문입니다.

계속 실패한다면 계정·구독·로그인 반복 문제는 로그인한 상태의 Get help로 문의하고, 설치·실행 버그는 /feedback 또는 공식 GitHub 이슈로 전달하세요. 공식 문의 안내에 따라 OS, claude --version 결과, PowerShell·WSL·SSH 여부, 오류 원문, 발생 시각과 시간대, 실패 단계, 시도한 조치와 결과를 정리하면 됩니다. 로그를 공유하기 전에는 API 키, 토큰, 인증 코드, 전체 승인 URL, 쿠키와 개인정보를 제거하세요. 담당자가 필요한 것은 실패를 구분할 정보이지 로그인 비밀값이 아닙니다.