본문 바로가기
C.W.K.
Stream
Lesson 05 of 07 · published

OAuth도 만료와 복구를 가진 운영 자격 증명이야

~12 min · oauth, auth, tokens

Level 0Observer
0 XP0/64 lessons0/13 achievements
0/150 XP to next level150 XP to go0% complete

로그인 뒤의 수명 주기를 설계해

Agent SDK는 claude login이 만든 OAuth 토큰으로 움직일 수 있어 개인 앱과 Pro/Max 구독 기반 운영에 잘 맞아. 토큰이 macOS Keychain이나 Linux 파일 중 어디에 사는지, 어떻게 갱신되는지, 만료되면 어떤 경보와 복구 절차가 시작되는지 알아야 해.

cwkPippa의 API 키 자리는 실행 경로가 아니야

cwkPippa 코드에는 대칭성과 미래 전환을 위한 Anthropic API 키 골격이 있지만 현재 런타임에서는 쓰지 않아. 실행 프로세스에 값 자체를 넣지 않아 sk-ant-* 패턴이 JSONL에 흘러갈 가능성을 없애. OAuth 전용은 과금 방식뿐 아니라 비밀 관리 정책이야.

인증 실패를 재시도 고리로 만들지 마

토큰이 무효하거나 만료되면 SDK가 인증 오류를 내. 내용을 기록하고 운영자에게 알리되 같은 자격 증명으로 무한 재시도하지 마. 갱신에 대화형 로그인이 필요할 수 있으므로 사람에게 이어지는 복구 경로가 있어야 해.

원칙: OAuth의 편리함은 만료 전까지야. 복구 절차를 적고 인증 실패를 조용한 장애로 남기지 마.

Code

OAuth failure 감지·surface·python
from claude_agent_sdk import query, ClaudeAgentOptions
from claude_agent_sdk.errors import AuthenticationError

async def try_query(prompt: str):
    try:
        async for ev in query(prompt=prompt, options=ClaudeAgentOptions(cwd="/tmp")):
            yield ev
    except AuthenticationError as e:
        # Blindly retry X — 운영자가 refresh할 때까지 토큰 bad.
        alert_operator(f"Claude OAuth failed: {e}")
        raise
API 키 값 forbid (cwkPippa 자세)·python
import os

if os.environ.get("ANTHROPIC_API_KEY", "").startswith("sk-ant-"):
    # 시작 거부; 값을 running 프로세스 밖.
    raise RuntimeError(
        "ANTHROPIC_API_KEY is set to a real key. Production runs on OAuth only;"
        " remove the env value so the sk-ant- pattern cannot leak into logs."
    )

External links

Exercise

운영 배포의 OAuth 토큰 위치와 갱신 가능한 사람, Claude 인증 실패 때의 복구 절차를 세 문장 안에 적어.
Hint
모르는 항목이 있다면 바로 그 항목이 새 운영 문서가 될 자리야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.