Claude Code: Anatomy of a Misfeature

개요

Claude Code 2.1.198 버전에서 인간의 입력 없이 에이전트가 계속 진행할 수 있도록 하는 60초 타이머 기능이 추가되었으나, 이에 대한 설명이 릴리스 노트나 문서에 포함되지 않아 사용자들의 혼란을 야기했다.

주요 내용

  • "미스피처" 등장: Claude Code 2.1.198 버전은 사용자의 입력 대기 시간을 60초로 제한하고, 응답이 없을 경우 자체 판단으로 계속 진행하는 기능을 기본값으로 활성화했다.
  • 숨겨진 기능: 이 기능은 릴리스 노트나 공식 문서 어디에도 명시되지 않았으며, 사용자는 CLAUDE_AFK_TIMEOUT_MS와 같은 환경 변수를 통해 이 기능을 인지하고 제어해야 했다.
  • 기능의 문제점:
  • 사용자가 자리를 비운 사이에도 에이전트가 임의의 결정을 내릴 수 있어 의도치 않은 결과 초래 가능성.
  • 여러 에이전트가 동시에 입력을 요청할 경우, 60초 내에 모든 에이전트의 요청에 응답하기 어려움.
  • 잘못된 결정으로 인한 토큰 낭비 및 배포와 같은 중요한 작업에 대한 위험 증가.
  • 긴급 수정: 사용자들의 항의와 이슈 제기 후, Anthropic은 약 이틀 만에 2.1.200 버전을 통해 해당 기능을 기본적으로 비활성화하고 /config를 통해 선택적으로 활성화할 수 있도록 수정했다.
  • 소스 코드 및 릴리스 정보 부재: 해당 기능의 도입 및 제거에 대한 공개적인 커밋 기록, PR, 디자인 문서 등이 존재하지 않아 기능 추가 및 변경 과정의 투명성에 대한 의문 제기.
  • 이진 파일 분석: 공개된 Git 저장소에는 실제 제품 코드가 아닌 변경 로그, 문서, 예제 등이 포함되어 있어, 실제 제품의 차이를 분석하기 위해서는 컴파일된 이진 파일을 직접 분석해야 함.
  • 이진 파일 비교: 2.1.197과 2.1.198 버전의 이진 파일을 분석한 결과, CLAUDE_AFK_TIMEOUT_MS와 같은 문자열이 0에서 비영(non-zero)으로 증가하여 해당 기능이 2.1.198 버전에 도입되었음을 명확히 보여줌.
  • 출시 시점의 설명 부재: 기능이 처음 출시된 2.1.198 버전 당시에는 릴리스 노트나 문서 어디에도 해당 내용이 언급되지 않았으며, 수정된 이후에야 문서가 업데이트되어 수정된 동작을 설명함.

시사점

Anthropic의 Claude Code에서 발생한 이번 "미스피처" 사건은 자동 업데이트 기능과 불투명한 릴리스 프로세스가 사용자 신뢰에 미치는 영향을 보여주며, 기술 제품 개발 및 배포 과정에서의 투명성과 명확한 문서화의 중요성을 강조한다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions