Claude Code auto mode가 중계 서버를 거치면 매 턴 실패? 2.1.317에서 게이트웨이 403/422 수정 (업데이트와 테스트)

Claude Code 2.1.317(11월 3일 출시)은 ANTHROPIC_BASE_URL이 LLM 게이트웨이를 가리키고, 그 게이트웨이가 서버 측 안전 검사에 403이나 422를 반환할 때 auto mode가 매 턴 실패하던 문제를 고쳤습니다. 무엇이 바뀌었는지, 어떤 서드파티 게이트웨이·중계 사용자가 영향을 받는지, 업데이트와 버전 확인, Base URL과 키 설정, auto mode 켜는 법, 2.1.316과 2.1.317 비교 테스트, 오류 대조표와 FAQ를 정리했습니다.

9 分钟阅读
Claude Code auto mode가 중계 서버를 거치면 매 턴 실패? 2.1.317에서 게이트웨이 403/422 수정 (업데이트와 테스트)

결론부터: 서드파티 게이트웨이나 중계 서버(사용자 지정 ANTHROPIC_BASE_URL)로 Claude Code를 쓰는데 auto mode를 켜면 매 턴 403이나 422로 실패한다면, 2.1.317로 업데이트하면 해결됩니다.

  • Claude Code 공식 CHANGELOG에 따르면 2.1.317은 "base URL로 설정한 LLM 게이트웨이가 서버 측 안전 검사에 403 또는 422를 반환하면 auto mode가 매 턴 실패하던" 문제를 고쳤습니다. apiKeyHelper를 쓸 때의 403은 그대로입니다. 2.1.317은 npm에 2026년 11월 3일 07:57(베이징 시간)에 게시되었습니다.
  • 11월 3일 오후(베이징 시간) 로컬 프록시로 안전 검사를 거부하는 게이트웨이를 재현했습니다. 2.1.316은 첫 요청부터 실패하고 이후 매 턴 실패했고, 2.1.317은 검사 필드를 빼고 한 번 다시 시도해 작업을 끝냈습니다.
  • aicodewith(https://api.aicodewith.ai)에 직접 연결했을 때는 2.1.316과 2.1.317 모두 auto mode로 작업을 끝냈습니다. 저희 API는 안전 검사 요청에 200을 반환하고, Claude Code는 로컬 분류기로 전환합니다.
  • 당장 업데이트할 수 없다면 CLAUDE_CODE_AUTO_MODE_SERVER=0을 설정해 auto mode가 서버에 검사를 요청하지 않게 하세요. 2.1.316에서 동작을 확인했습니다.

API Key를 만들고 Claude Code, Codex, Cursor에서 Claude 사용하기 →

2.1.317에서 바뀐 점

auto mode는 Claude Code의 권한 모드 중 하나로, 작업마다 직접 승인하는 대신 분류기가 백그라운드에서 각 작업이 안전한지 검사합니다. 공식 권한 모드 문서에 따르면 ANTHROPIC_BASE_URL이 LLM 게이트웨이나 프록시를 가리키면 Claude Code는 먼저 서버에 검사를 요청하고(서버 측 분류기), 서버가 검사하지 않으면 로컬 분류기로 돌아갑니다.

문제는 이 "서버 측 검사" 단계에 있습니다. Claude Code는 요청에 safeguards 필드와 beta 헤더를 추가합니다. 이를 모르는 게이트웨이는 403(거부)이나 422(잘못된 필드)를 반환하고, 이전 버전은 이를 일반 실패로 처리해서 매 턴 실패했습니다.

CHANGELOG에 따르면 2.1.317의 auto mode·게이트웨이 관련 항목은 다음과 같습니다.

항목내용
주요 수정base URL로 설정한 게이트웨이가 서버 측 안전 검사에 403 또는 422를 반환해도 auto mode가 매 턴 실패하지 않음 (apiKeyHelper 사용 시 403은 그대로)
새 알림서브에이전트의 도구 호출에 대해 auto mode 검사가 답을 주지 않으면 알림 표시. 이전에는 메인 화면에 아무것도 나오지 않았음
403 메시지지역 또는 네트워크 차단(HTTP 403)이 로그인 실패로 표시되지 않고, 차단이라고 설명함
OTel지표, 이벤트, span에 anthropic.plan, anthropic.seat_type, anthropic.provider, anthropic.custom_base_url 추가

이전 버전에서도 같은 영역을 손봤습니다.

버전관련 항목
2.1.316프록시나 LLM 게이트웨이 뒤에서 호스트 앱(Claude Desktop 등)이 실험적 beta를 끄고 시작한 세션에서 CLAUDE_CODE_AUTO_MODE_SERVER=1이 무시되던 문제 수정
2.1.314안전 검사가 판정을 내리지 않았을 때 auto mode가 호출을 blocked로 보고하고 /permissions에 올리던 문제 수정
2.1.304안내형 설정 /auto-mode-setup을 Bedrock, Vertex, Foundry, Claude apps gateway, 텔레메트리를 끈 세션에서도 사용 가능
2.1.302클라이언트 측 분류기 모델을 고르는 CLAUDE_CODE_AUTO_MODE_MODEL 추가 (서버 측 auto mode에는 영향 없음). 서드파티 제공자, 텔레메트리 꺼짐, 새 설치에서 권한 모드를 지정하지 않은 claude -p는 default로 시작하고, --permission-mode auto는 auto 유지

누가 이 문제를 겪나

다음 세 가지에 모두 해당할 때입니다.

  1. auto mode를 쓴다. 문서에 따르면 2.1.283부터 터미널과 VS Code의 시작 모드가 auto mode입니다.
  2. ANTHROPIC_BASE_URL이 서드파티 LLM 게이트웨이, 중계 서버, 회사 프록시를 가리킨다.
  3. 그 게이트웨이가 safeguards 필드나 dangerous-tool-use beta 헤더가 담긴 요청에 403이나 422를 반환한다. 흔한 원인은 요청 본문의 엄격한 검증(모르는 필드면 422)이나 보안 정책(403)입니다.

Anthropic API에 직접 로그인했거나, 모르는 필드를 그대로 전달하는 게이트웨이라면 영향이 없습니다. 게이트웨이가 무엇을 전달해야 하는지는 공식 LLM 게이트웨이 문서를 참고하세요.

안전 검사 요청은 이렇게 생겼다

Claude Code와 aicodewith 사이에 요청을 기록만 하는 로컬 프록시를 두었습니다. auto mode 세션의 첫 요청에는 다음 내용이 들어 있었습니다(발췌).

text
POST /v1/messages?beta=true
anthropic-beta: claude-code-20250219, ..., dangerous-tool-use-2026-09-03, afk-mode-2026-01-31

"safeguards": [{"type": "dangerous_tool_use",
                "classifier_context": {"v": 1, "permission_mode": "auto", "platform": "linux", ...}}]

서버가 검사하지 않으면 이후 요청에는 safeguards가 빠집니다. 대신 Bash 등을 실행하기 전에 로컬 분류기 모델(기본값 claude-sonnet-5)로 별도 요청을 보냅니다.

테스트: 2.1.316 대 2.1.317

환경: 2026년 11월 3일 15:12–15:35(베이징 시간), Linux, 모델 claude-opus-5-5, aicodewith 키, 실행마다 새 설정 디렉터리. 작업은 피보나치 수열을 출력하는 fib.py를 작성하고 python3로 실행하는 것으로, 파일 쓰기 1회와 auto mode 검사를 거치는 Bash 명령 1회가 발생합니다.

bash
claude -p "Create a file fib.py that prints the first 10 Fibonacci numbers, then run it with python3 and tell me the output." \
  --permission-mode auto --model claude-opus-5-5 \
  --output-format json --debug-file ./cc-debug.log

grep -E "server-classifier|API error" ./cc-debug.log

"모의 게이트웨이"는 로컬 프록시에 추가한 규칙입니다. safeguards 필드가 있는 요청에는 403 또는 422를 반환하고, 나머지는 aicodewith로 그대로 전달합니다. CHANGELOG에 적힌 상황을 재현하기 위한 것이며 aicodewith의 실제 동작이 아닙니다.

경우2.1.3162.1.317
aicodewith 직접 연결성공, 3턴, 12.0초성공, 4턴, 17.7초
모의 게이트웨이가 안전 검사에 4030.6초 만에 실패, Failed to authenticate. API Error: 403 .... 다음 턴도 실패성공, 3턴, 11.8초
모의 게이트웨이가 안전 검사에 4220.7초 만에 실패, API Error: 422 .... 다음 턴도 실패성공, 3턴, 15.7초
모의 403 + apiKeyHelper—11회 재시도 후 실패, 248.4초, Failed to authenticate
2.1.316 + CLAUDE_CODE_AUTO_MODE_SERVER=0, 모의 403 / 422성공, 13.7초 / 10.8초필요 없음

2.1.317 직접 연결에서 한 턴이 더 많은 것은 Claude가 출력을 확인하려고 스크립트를 한 번 더 실행했기 때문이며 버전과는 무관합니다. 성공한 모든 실행이 0, 1, 1, 2, 3, 5, 8, 13, 21, 34를 출력했습니다.

aicodewith 직접 연결: 두 버전 모두 정상

저희 API는 safeguards가 담긴 요청에 200을 반환하지만 판정 결과는 돌려주지 않습니다. debug 로그를 보면 Claude Code가 서버가 검사하지 않는다고 판단하고 세션 끝까지 로컬 분류기를 씁니다.

text
[server-classifier] the platform gave no classification for this request (server_no_result);
  treating that as this deployment's answer: auto mode classifies locally for the rest of
  this session and stops sending the classifier context
[auto-mode] new action being classified: tool=Bash actionChars=26
[Stall] classifier_request_finished tool=Bash stage=xml_s1 outcome=ok durationMs=2727

Bash 명령마다 로컬 검사는 약 2.5–2.7초 걸렸습니다. 시작할 때 stderr에 현재 주소가 새 서버 측 분류를 지원하지 않지만 auto mode는 계속 동작한다는 영어 안내가 나오는데, 무시해도 됩니다.

2.1.316 + 안전 검사를 거부하는 게이트웨이: 매 턴 실패

{OLD403}

403이 Failed to authenticate(인증 실패)로 표시되어 키가 틀린 것처럼 보입니다. 실제로 키는 정상이고, 같은 설정으로 manual 모드에서는 동작합니다.

2.1.317: 검사 필드를 빼고 한 번 재시도

업데이트 후 같은 게이트웨이에서 debug 로그는 이렇습니다.

text
[ERROR] API error (attempt 1/11): 403 403 {"type":"error","error":{"type":"permission_error",
        "message":"gateway policy: field safeguards is not allowed"}}
[WARN] [server-classifier] HTTP 403 with no cause Claude Code recognises, on a request that
       carried the dangerous-tool-use beta header; sending it once more without that header
       and the safeguards field, to learn whether they caused the refusal
[WARN] [server-classifier] a request was refused (HTTP 403) and answered when sent again
       without the dangerous-tool-use beta header and the safeguards field. Until Claude Code
       restarts, neither is sent and auto mode does not ask the server to check actions.
       To keep the check, let the gateway pass that header and field, then restart Claude Code.

즉 2.1.317은 원인을 알 수 없는 403 / 422를 받으면 dangerous-tool-use beta 헤더와 safeguards 필드를 빼고 한 번 다시 보냅니다. 성공하면 재시작할 때까지 서버에 검사를 요청하지 않고 로컬 분류기를 씁니다. 작업 검사는 계속되며 로컬에서 이뤄질 뿐입니다. 서버 측 검사를 되살리려면 게이트웨이가 이 헤더와 필드를 통과시키게 한 뒤 Claude Code를 재시작하세요.

apiKeyHelper를 쓸 때의 403은 여전히 실패

CHANGELOG에는 apiKeyHelper 사용 시 403은 그대로라고 되어 있고, 테스트에서도 그랬습니다. 2.1.317은 11회 재시도한 뒤 약 4분 만에 오류로 종료했습니다.

text
# 2.1.317 + apiKeyHelper, gateway answers 403 to the safety check
[ERROR] API error (attempt 1/11): 403 ...
...
[ERROR] API error (attempt 10/11): 403 ...
Failed to authenticate. API Error: 403 gateway policy: field safeguards is not allowed
# exit 1 after 248.4 s

apiKeyHelper를 쓴다면 게이트웨이에서 safeguards를 통과시키거나, 아래의 CLAUDE_CODE_AUTO_MODE_SERVER=0을 쓰세요.

2.1.317로 업데이트

공식 설치 문서에 따르면 네이티브 설치는 백그라운드에서 자동 업데이트되고, npm·Homebrew·WinGet 설치는 직접 업데이트해야 합니다. npm은 npm update -g가 아니라 npm install -g ...@latest를 쓰세요.

bash
# native install (curl -fsSL https://claude.ai/install.sh | bash)
claude update

# npm install
npm install -g @anthropic-ai/claude-code@latest

# Homebrew (the claude-code cask follows the stable channel)
brew upgrade claude-code@latest

# Windows WinGet
winget upgrade Anthropic.ClaudeCode

# check
claude --version
# 2.1.317 (Claude Code)

claude --version이 2.1.317 이상이면 됩니다. Homebrew의 claude-code cask는 stable 채널을 따라 보통 latest보다 1주 정도 늦습니다. 이번 수정을 바로 받으려면 claude-code@latest를 쓰세요. 세션에서 /status를 실행하면 Auto mode server가 Enabled인지 볼 수 있습니다.

ANTHROPIC_BASE_URL과 키 설정

먼저 aicodewith에서 API 키를 만드세요.

API Key를 만들고 Claude Code에 연결하기 →

macOS / Linux:

bash
export ANTHROPIC_BASE_URL="https://api.aicodewith.ai"
export ANTHROPIC_AUTH_TOKEN="YOUR_API_KEY"
claude --permission-mode auto

Windows PowerShell:

powershell
$env:ANTHROPIC_BASE_URL = "https://api.aicodewith.ai"
$env:ANTHROPIC_AUTH_TOKEN = "YOUR_API_KEY"
claude --permission-mode auto

계속 쓰려면 ~/.claude/settings.json에 넣으세요. permissions.defaultMode를 auto로 두는 설정은 사용자 설정에서만 동작하고, 프로젝트의 .claude/settings.json에서는 동작하지 않습니다(문서 기준).

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
    "ANTHROPIC_AUTH_TOKEN": "YOUR_API_KEY"
  },
  "permissions": {
    "defaultMode": "auto"
  }
}

다른 설정 방법(Windows 영구 환경 변수, 모델 설정)은 「Claude Code를 서드파티 API에 연결하는 방법」을 참고하세요.

auto mode 켜기

  • 시작할 때: claude --permission-mode auto.
  • 세션 중: Shift+Tab으로 전환하고, 상태 표시줄에 ⏵⏵ auto mode on이 보이면 auto mode입니다.
  • 비대화형(claude -p): 2.1.302 CHANGELOG에 따르면 서드파티 제공자, 텔레메트리 꺼짐, 새 설치에서는 권한 모드를 지정하지 않으면 default로 시작하므로 --permission-mode auto를 명시하세요.
  • 로컬 분류기 모델 변경: CLAUDE_CODE_AUTO_MODE_MODEL(2.1.302부터). 서버 측 검사에는 영향이 없습니다.

아직 업데이트할 수 없는데 게이트웨이가 안전 검사를 거부한다면, 서버 측 검사를 끄고 로컬 분류기만 쓸 수 있습니다.

{SERVER0}

2.1.316에서 모의 403·422 게이트웨이와 함께 테스트했고, 두 경우 모두 작업을 마쳤습니다.

자주 보는 오류 대조표

증상원인해결
매 턴 API Error: 403 ..., 앞에 Failed to authenticate. manual 모드는 정상게이트웨이가 auto mode의 서버 측 안전 검사를 거부2.1.317로 업데이트하거나 CLAUDE_CODE_AUTO_MODE_SERVER=0 설정
매 턴 API Error: 422 ..., 메시지에 safeguards게이트웨이가 본문을 엄격히 검증해 safeguards 필드를 거부위와 같음, 또는 게이트웨이에서 필드 통과
apiKeyHelper 사용 시 4032.1.317에서도 동작이 같고, 여전히 인증 실패로 처리게이트웨이에서 safeguards와 beta 헤더 통과, 또는 CLAUDE_CODE_AUTO_MODE_SERVER=0
지역·네트워크 차단으로 인한 403지역 또는 네트워크 제한2.1.317부터 로그인 실패 대신 차단이라고 설명. 네트워크를 바꾸거나 접근 가능한 게이트웨이 사용
작업이 멈추고 안전 검사가 판정을 주지 않음서버가 해당 작업에 판정을 주지 않음2.1.314부터 blocked로 잘못 보고되지 않음. 2.1.317부터 서브에이전트도 알림 표시. 문서에 따르면 판정 없는 응답이 10번 연속되면 턴이 멈춤
manual 모드에서도 매 턴 403 / 401키가 잘못됐거나 Base URL 오류키와 ANTHROPIC_BASE_URL 확인. auto mode와 무관

자주 묻는 질문

aicodewith를 씁니다. 업데이트해야 하나요?

테스트에서 2.1.316과 2.1.317 모두 저희 API로 auto mode가 정상 동작했으므로 이 버그는 겪지 않습니다. 2.1.317에는 다른 수정도 있으니 평소처럼 업데이트를 권합니다.

2.1.317 이후에도 auto mode는 안전한가요?

검사는 계속됩니다. 빠지는 것은 "서버에 검사를 요청하는" 단계뿐이고, 검사가 필요한 작업은 로컬 분류기가 판단합니다. 로그에서도 Bash 명령마다 로컬 검사 기록이 있었습니다.

왜 403이 "Failed to authenticate"로 표시되나요?

이전 버전은 auto mode 안전 검사에서 받은 403을 인증 실패로 처리했습니다. 키가 정상이고 manual 모드에서는 되는데 auto mode에서만 403이 난다면 거의 이 문제입니다.

이 문제가 맞는지 어떻게 확인하나요?

--debug-file을 붙여 한 번 실행하고 로그에서 server-classifier와 API error를 찾으세요. 오류에 safeguards가 있거나 2.1.317이 "sending it once more without that header and the safeguards field"를 출력했다면 게이트웨이가 안전 검사를 거부한 것입니다.

Codex에도 비슷한 권한 설정이 있나요?

Codex는 샌드박스와 승인 정책으로 명령 실행을 제어합니다. 설정 방법은 「Codex 샌드박스와 /permissions 설정」을 참고하세요.

더 읽을거리

相关文章

DeepSeek Harness Creator Mode 사용법: 설치, 서드파티 API 연결, 첫 플러그인 만들기 실측

DeepSeek Harness Creator Mode 사용법: 설치, 서드파티 API 연결, 첫 플러그인 만들기 실측

11월 2일 DeepSeek Harness 공식 계정이 Creator Mode를 소개했습니다. 원하는 도구를 한 문장으로 설명하면 에이전트가 플러그인을 작성하고 Harness에 설치한 뒤 로드됐는지까지 확인합니다. 이 글은 Creator Mode가 무엇인지, npx로 Harness를 실행하는 방법, OpenAI 호환 서드파티 API(aicodewith Base URL + Key)를 연결해 Claude, GPT, DeepSeek 모델을 쓰는 방법, Creator Mode로 todo_scan 플러그인을 만드는 과정을 실제 출력, 자주 나는 오류, Claude Code / Codex의 대응 방법과 함께 정리합니다.

Claude Message Threads 사용법: Messages API 메시지 스레드 공개 베타, 새 메시지만 보내고 첫 토큰 약 35% 빨라짐 (Claude Code / API 실측)

Claude Message Threads 사용법: Messages API 메시지 스레드 공개 베타, 새 메시지만 보내고 첫 토큰 약 35% 빨라짐 (Claude Code / API 실측)

Anthropic이 11월 2일 Messages API의 Message Threads(메시지 스레드)를 공개 베타로 내놓았습니다. 첫 요청에서 전체 대화를 보내 스레드를 만들고, 이후에는 새 메시지와 직전 응답의 id만 보냅니다. 긴 대화에서 첫 토큰이 더 빨리 오지만 토큰 사용량과 과금은 그대로입니다. 이 글은 공식 문서를 기준으로 thread 파라미터, 베타 헤더, 5분 만료와 404 재전송을 설명하고 curl, Python, TypeScript 예시를 보여 줍니다. 또 aicodewith Key로 실측한 결과, aicodewith를 거치면 현재 thread 필드가 무시되어 이어서 보낸 턴이 앞 맥락을 잃는다는 점, Claude Code는 영향이 없다는 점, 대안과 자주 보는 오류를 정리합니다.

Karpathy의 HackerTube 만드는 법:Claude Code / Codex로 Hacker News 댓글에서 영상을 찾아 알고리즘 없는 영상 사이트 만들기(실측)

Karpathy의 HackerTube 만드는 법:Claude Code / Codex로 Hacker News 댓글에서 영상을 찾아 알고리즘 없는 영상 사이트 만들기(실측)

Karpathy는 Claude Code와 Opus 5.5로 약 2시간 만에 HackerTube를 만들었습니다. Hacker News에서 20년 동안 반복해서 추천된 YouTube 영상 6,454개를 골라낸 사이트입니다. 이 글에서는 저희 API Key로 Claude Code와 Codex에 각각 축소판을 만들게 했습니다. HN 공식 Algolia API로 두 달 치 댓글을 가져와 YouTube 링크를 추출하고, 중복을 제거해 집계한 뒤 정적 페이지를 생성합니다. 전체 프롬프트, 소요 시간, 두 클라이언트 비교, HackerTube까지 남은 단계를 정리했습니다.