**task-1287.1 완료 보고** (dev1-team) **완료 보고서: 계정 전환 시스템 재설계** (5분 12초) **핵심 결과** `~/.claude/.active-account` 상태 파일(계정명만 저장)을 단일 진실 원천(SSOT)으로 도입하여 해결. `_get_auth_status()`의 MD5 비교 1차 제거, `_get_usage_status()`의 3단계 fallback을 상태 파일 읽기 + MD5/refreshToken 2단계 fallback으로 축소. `switch-account.sh`는 동적 계정 목록 + 전환 전 토큰 백업 동기화 + 상태 파일 갱신으로 완전 재작성. pytest 7건 전체 통과, pyright 에러 0건. ## 작업 내용 ### 근본 원인 - 활성 계정 식별에 **추론(inference)** 방식 사용 — MD5 비교는 토큰 갱신 시 불일치 - **SSOT(Single Source of Truth)** 부재 — `.credentials.json`이 자격증명 + 식별자 이중 역할 ### 개선안: `.active-account` 상태 파일 도입 - `~/.claude/.active-account`에 활성 계정명만 저장 (예: `drumband`) - 모든 코드가 이 파일을 1차로 읽고, 없을 때만 기존 방식 fallback ### 변경 상세 1. **`_get_auth_status()` (server.py:3553~3580)** — `.active-account` 우선 읽기, MD5 fallback 유지 2. **`_get_usage_status()` (server.py:3676~3711)** — 3단계 fallback → 상태파일 + MD5 + refreshToken 2단계로 축소, scopes 테스트: pyright 0 errors **발견/해결 이슈 3건** 1. **빈 `.active-account` 파일 시 fallback 미작동** — `.strip() or None` 패턴으로 빈 문자열을 None 변환 2. **scopes 비교 Fallback B 불필요** — MD5 + refreshToken이면 충분, scopes 비교는 유일 매치 조건이라 false positive 위험. 제거. 3. **`switch-account.sh` 전환 시 토큰 손실** — 활성 계정 토큰이 갱신된 상태에서 다른 계정으로 전환하면, 갱신된 토큰이 백업에 미반영. 전환 전 현재 `.credentials.json`을 이전 계정 백업에 동기화하는 로직 추가.