Pattern Skills

reopt-human-approval

인간 승인

고비용·고위험·고영향 결정을 인간 승인 흐름 안에 둔다.

OCLS SHARPEN

설치

cp skills/patterns/reopt-human-approval/SKILL.md <your-project>/.claude/skills/reopt-human-approval/SKILL.md

이 레포의 파일을 당신의 프로젝트에 복사하면 Claude Code 세션에서 바로 활성화된다.

markdownskills/patterns/reopt-human-approval/SKILL.md
---
name: reopt-human-approval
description: 비가역·고영향 결정에 인간 승인을 삽입할 때. 승인 분류(자동/사후/사전) 정의. 비동기 승인 큐 설계, 프롬프트 인젝션·정렬 오류 대응.
---

# 인간 승인 (Human Approval)

OCLS 단계: **SHARPEN** · 고비용·고위험·고영향 의사결정은 인간 승인 흐름 안에 둔다.

## 핵심 규칙

- 비용·위험도·영향 범위 기준으로 승인 필요 작업을 명시적으로 분류한다.
- 저위험 → 자동 승인, 중위험 → 사후 검토, 고위험 → 사전 승인.
- 승인 흐름은 실행 루프에 내장하되, 승인 대기 중 다른 작업을 계속할 수 있는 비동기 구조가 기본.
- 모든 승인 이벤트는 로그에 남긴다.
- 네 가지 위협 유형: (1) 과잉 행동(overeager) — 목표 달성하되 허용 범위 초과, (2) 정직한 실수 — 리소스 범위나 소유권 오해, (3) 프롬프트 인젝션 — 도구 출력에 심어진 악의적 지시, (4) 모델 정렬 오류 — 독립적 목표 추구.
- 보수적 기본값: "에이전트가 자율 선택한 모든 것은 사용자가 명시적으로 허용할 때까지 미승인."

## 판단 질문

**언제 에이전트가 멈추고 사람에게 넘겨야 하는가?**

## 적용 체크

1. 승인 분류 매트릭스(저/중/고위험)가 문서화되어 있는가?
2. 비동기 승인 큐가 구현되어 있는가?
3. 승인/거절 이벤트가 로그에 남는가?
4. 네 가지 위협 유형에 대응하는 규칙이 있는가?

## 코드 예시

```typescript
// 승인 분류 규칙
type RiskTier = "low" | "medium" | "high";

function classifyApproval(action: Action): RiskTier {
  if (action.cost > 500000 || action.kind === "legal-statement") return "high";
  if (action.cost > 100000 || action.kind === "refund" || action.novel) return "medium";
  return "low";
}

// 비동기 승인 큐
interface ApprovalQueue {
  enqueuePreApproval(action: Action): Promise<Ticket>; // 승인까지 대기
  enqueuePostReview(action: Action, result: Result): Promise<void>; // 사후 검토
}

async function executeWithApproval(action: Action, queue: ApprovalQueue) {
  const tier = classifyApproval(action);
  if (tier === "low") return execute(action);
  if (tier === "medium") {
    const result = await execute(action);
    await queue.enqueuePostReview(action, result);
    return result;
  }
  // high: 사전 승인 대기하되 다른 작업은 계속
  const ticket = await queue.enqueuePreApproval(action);
  return { pending: true, ticketId: ticket.id };
}
```

## 안티패턴

**고객 상담**: 승인 기준 없이 운영하면 에이전트가 전액 환불을 자동 처리하거나 법적 책임을 시인하는 응답을 보내는 사고가 발생한다. 반대로 모든 응답에 승인을 요구하면 처리 시간이 평균 2시간에서 8시간으로 늘어 고객 이탈이 급증한다.

**인프라 자동화**: 자동 배포 에이전트가 prod 롤백·DB 마이그레이션까지 자율 실행하면 되돌릴 수 없는 사고로 이어진다. 영향 범위가 prod·사용자 데이터·보안 설정인 작업은 사전 승인을 기본값으로 둔다.

## 호출 예시

```
"RefundAgent에 Human Approval을 삽입해줘.
저위험(자동): 10만원 이하 환불.
중위험(사후 검토): 10-50만원 또는 신규 케이스.
고위험(사전 승인): 50만원 초과, 법적 언급, 대량 환불.
비동기 큐로 고위험 승인 대기 중에도 다른 문의는 계속 처리."
```

## 관련 패턴

- Evaluation and Guardrails — 승인 트리거의 평가 기반
- Responsibility Partitioning — 승인자(사람)의 책임 경계

연결된 패턴

Human Approval인간 승인고비용·고위험·고영향 의사결정은 인간 승인 흐름 안에 둔다.