---
task_id: task-2076
type: context
scope: task
created: 2026-04-22
updated: 2026-04-22
status: completed
---

# 맥락 노트: task-2076

**task**: task-2076

---

## 결정 근거

### 3 Step Why 자문

**1st Why**: "왜 이 수정이 필요한가?"
- Codex 게이트가 형식적 PASS만 발행하고 있어, 실제 AI 리뷰 없이 설계 검증을 통과하는 품질 허점이 존재

**2nd Why**: "왜 코드 수정이 최선의 접근인가?"
- API 키가 유효해지더라도, 코드가 env 전달, 에러 로깅, 게이트 소스 표시를 제대로 처리하지 않으면 같은 문제가 반복됨. 방어적 코딩으로 근본 원인 차단 필요

**3rd Why**: "왜 다른 대안(예: codex-companion 교체, 직접 OpenAI API 호출)보다 나은가?"
- codex-companion 인프라는 이미 존재하고, env 전달/로깅 강화/보고서 구분이 가장 적은 변경으로 최대 효과. 직접 API 호출은 companion 생태계와 중복되고 유지보수 부담 증가

→ A-B-C 논리적 일관성 확인: 품질 허점 → 방어적 코딩 → 최소 변경 원칙. 일관됨.

### 근본 원인 분석 결과

1. **OPENAI_API_KEY 401 에러**: `.env.keys`의 키가 ChatGPT 소비자 계정 키로, API 플랫폼용이 아님 → codex-companion은 Codex API에 접근 불가
2. **env 전달 누락**: `subprocess.run`에 `env` 파라미터 미전달 → 봇 세션에서 env_loader로 로드한 변수가 자식 프로세스에 전달 불보장
3. **조용한 폴백**: companion 실패 시 경고만 남기고 폴백 → 보고서에서 실제 AI 리뷰 여부 구분 불가

### API 키 유효성 테스트 결과 (2026-04-22)
```
openai.AuthenticationError: Error code: 401 - Incorrect API key
codex-companion: "The 'gpt-5.2-codex' model is not supported when using Codex with a ChatGPT account."
```
→ 인프라 이슈로, 코드 수정 범위 밖. 별도 운영 조치 필요.

## 참조 자료

- 대상 파일: `/home/jay/workspace/scripts/codex_gate_check.py`
- 테스트: `/home/jay/workspace/scripts/tests/test_codex_gate_check.py`
- 통합 테스트: `/home/jay/workspace/tests/integration/test_codex_gate.py`
- env_loader: `/home/jay/workspace/utils/env_loader.py`

## 주의사항

- OPENAI_API_KEY 갱신은 운영팀(아누) 판단 필요 — API 플랫폼 키로 교체해야 companion 실제 동작 가능
- fallback_reason 필드 추가로 기존 결과 dict 스키마 변경 — 소비자 코드가 있다면 호환성 확인 필요 (현재 소비자는 봇 프롬프트뿐이라 영향 없음)
