All posts

Claude Code 2.1.319: MCP 백그라운드 작업과 무인 실행의 거절 처리

MCP task의 백그라운드 실행, 권한 요청을 바로 거절하는 설정, auto mode 종료 코드와 self-paced /loop 변경을 공식 릴리스에서 확인했다.

터미널 뒤에서 실행되는 작업 카드와 잠긴 권한 게이트, 완료 결과를 표현한 개념 일러스트

Claude Code 2.1.319에서 터미널의 MCP 작업 처리와 무인 실행의 거절 방식이 바뀌었다. 오래 걸리는 도구가 MCP task로 실행되면 백그라운드로 옮기고 권한 확인을 기다릴 호출은 설정에 따라 바로 거절한다. 자동화를 운영한다면 작업 완료 결과와 프로세스 종료 코드를 함께 살펴볼 만한 업데이트다.

Anthropic 공식 릴리스의 공개 시각은 2026년 11월 6일 17:04 UTC다. 한국 시간으로는 11월 7일 02:04이며 정식 릴리스로 표시돼 있다. 이 글은 11월 8일 브리핑에서 발견한 변경을 공식 기록과 대조해 정리했다. 아래 동작은 공급사의 변경 설명이며, 별도 환경에서 실행을 재현하거나 성능을 측정하지는 않았다.

MCP task의 결과는 완료 뒤 돌아온다

이번에 추가된 터미널 지원은 MCP 서버가 도구 호출을 task로 실행하는 경우에 해당한다. Claude Code는 해당 작업을 곧바로 백그라운드로 옮기고 완료되면 Claude에 결과를 전달한다. 모든 MCP 호출이 자동으로 비동기 작업이 된다고 읽으면 범위가 넓어진다. 서버가 task로 실행하는지부터 확인해야 한다.

기존처럼 도구 호출 안에서 완료를 기다리게 하려면 CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUND 환경변수를 사용한다. 릴리스는 이 변수의 역할을 명시하지만 백그라운드 실행의 속도 향상 수치를 제시하지는 않는다. 따라서 호출이 오래 걸리는 서비스에 적용할 때는 대기 시간뿐 아니라 완료 통지가 돌아오는 경로도 확인하는 편이 좋다.

이 버전에서는 기능 플래그를 가져오지 않는 환경에서도 터미널 MCP task를 사용할 수 있도록 바뀌었다. 공식 기록은 Bedrock, Vertex, Foundry, LLM 게이트웨이와 DISABLE_TELEMETRY 환경을 열거한다. task 기능 자체를 끄는 CLAUDE_CODE_DISABLE_MCP_TASKS=1과 백그라운드 이동만 제어하는 변수는 역할이 다르다.

권한 요청에서 멈추는 대신 호출을 거절하는 설정

새 설정 permissions.denyInsteadOfPrompting은 권한 요청을 기다리게 될 도구 호출을 거절하고 턴을 계속 진행한다. 터미널 세션, 하위 에이전트와 팀원에 적용된다고 공식 릴리스는 설명한다. 호출이 허용되는 설정으로 오해하지 않도록 주의할 필요가 있다.

무인 작업이 권한 요청 창에서 멈추는 상황은 줄일 수 있겠지만 거절한 도구의 결과가 꼭 필요한 작업이라면 원하는 산출물을 얻지 못할 수 있다. 이는 운영상 예상할 수 있는 영향이며 공급사가 성공률을 측정해 발표한 결과는 아니다. 적용 전에는 필요한 호출이 실제로 허용되는지, 거절 뒤 작업이 어떻게 보고되는지 확인해야 한다.

종료 코드 수정도 같은 맥락에서 읽을 수 있다. 기존에는 auto mode의 claude -p에서 안전 검사를 사용할 수 없어 동작을 거절해도 0으로 종료하는 경우가 있었다. 2.1.319에서는 이 경우 텍스트와 JSON 출력 모두 종료 코드 1을 반환하도록 고쳤다. 스케줄러에서 종료 코드만으로 성공을 집계한다면 이 변경이 실패 감지에 영향을 준다. 모든 종류의 거절이 같은 종료 코드를 낸다는 설명은 아니다.

게이트웨이와 반복 실행도 함께 점검하기

텔레메트리나 기능 플래그를 끈 auto mode에서는 서버가 검사할 수 없는 호출을 사용자에게 묻거나 거절하도록 바뀌었다. 내장 분류기로 자동 대체하지 않는다는 설명도 포함돼 있다. 공식 릴리스는 Bedrock, Vertex, Foundry의 해당 동작은 바뀌지 않았다고 구분한다. 조직의 LLM 게이트웨이를 쓰는 경우에는 기존 설정과 이번 변경이 만나는 조건을 따로 확인해야 한다.

자체 속도로 실행하는 self-paced /loop도 턴이 끝나면 다시 예약하지 않고 종료하도록 바뀌었다. 이전 동작은 CLAUDE_CODE_LOOP_KEEPALIVE=1로 유지할 수 있다고 안내한다. 이 항목은 self-paced 모드에 대한 설명이다. 모든 예약 방식의 /loop가 중단된다고 일반화할 근거는 없다.

업데이트를 검토할 때는 실제 사용하는 MCP 서버의 task 지원, 권한 요청이 발생하는 호출, claude -p를 감싸는 스케줄러의 실패 처리부터 좁혀 확인하면 된다. MCP 작업의 완료 통지와 거절된 호출의 결과를 각각 기록해 두면 프로세스가 끝났다는 사실과 요청한 일을 마쳤다는 사실을 구분하기 쉽다.

공식 출처

Discussion

No comments yet