# Phase 0: OAuth 보안 패치 보고서

> 작성: task-686.1 Phase 0 | 2026-03-18

## 패치 내용

1. `_require_env()` 헬퍼 추가 — 환경변수 미설정 시 명시적 RuntimeError
2. `_OAUTH_CLIENT_ID`/`_OAUTH_CLIENT_SECRET` 하드코딩 제거 → `_require_env("GEMINI_OAUTH_CLIENT_ID")`/`_require_env("GEMINI_OAUTH_CLIENT_SECRET")`
3. `.env.keys`에 두 환경변수 추가 (기존 값 이전)
4. `engine.py` 최상단 DEPRECATED 헤더 추가
5. `call_gemini()`, `call_codex()`, `call_claude()` docstring에 deprecation 경고 추가

## Git History 시크릿 노출 확인

커밋 `89eeb50` (feat: 멀티모델 봇 + OAuth 수정)에서 OAuth Client ID/Secret이 평문으로 노출됨.

- **Client ID**: `681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com`
- **Client Secret**: `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`

### 권장 조치
- P1: 제이회장님 보고 → Google Cloud Console에서 시크릿 로테이션(재발급) 결정
- P2: Phase 2 완료 후 CLI 전환으로 OAuth 코드 자체 제거
- 참고: `git filter-repo` 또는 BFG Repo Cleaner로 history rewrite 검토 필요

## 검증 결과
- Syntax: OK
- Pyright: 0 errors, 0 warnings
- 함수 시그니처 변경 없음
