내가 Claude Code용 신뢰 점수 훅을 만든 방법

발행: (2026년 3월 8일 PM 05:03 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

개요

저는 Claude Code를 한동안 사용해 왔으며, 세션 전반에 걸쳐 에이전트가 무엇을 하고 있는지—어떤 도구를 호출했는지, 허가되지 않은 파일에 접근했는지, 작업당 몇 번의 호출을 했는지—전혀 알 수 없다는 것을 깨달았습니다. 이를 해결하기 위해 저는 매 세션마다 점수를 매기는 훅을 만들었습니다.

이 훅은 세 가지 Claude Code 이벤트를 청취합니다:

  • PostToolUse – 모든 도구 호출을 기록하고, 허용 목록과 비교하며, 보호된 경로 접근을 표시합니다.
  • PreToolUse.env나 SSH 키와 같은 민감한 파일에 접근하려는 도구 호출을 차단합니다.
  • Stop – 최종 신뢰 점수를 계산하고 로그에 남깁니다.

각 세션이 끝나면 다음과 같은 출력이 표시됩니다:

[authe.me] Trust Score: 92 (reliability=100 | scope=75 | cost=100)
[authe.me] tools=14 violations=1 failed=0

점수 모델

신뢰 점수는 세 차원의 가중 조합으로 계산됩니다:

차원가중치설명
Reliability40 %성공적으로 수행된 도구 호출 비율.
Scope35 %에이전트가 허용된 도구와 경로 내에 머물렀는지 여부. 위반당 점수가 25점씩 감소합니다.
Cost25 %수행된 도구 호출 수. 20 이하이면 괜찮고, 100을 초과하면 플래그가 설정됩니다.

구현 세부 사항

도구 호출의 해시 체이닝

각 도구 호출 이벤트는 이전 해시와 함께 해시되어 간단한 체인을 만듭니다. 로그가 변조되면 체인이 끊어져—경량 블록체인 스타일의 감사 추적이 가능합니다.

import hashlib, json

def compute_hash(prev_hash, data):
    payload = f"{prev_hash}:{json.dumps(data, sort_keys=True)}"
    return hashlib.sha256(payload.encode()).hexdigest()[:16]

PreToolUse 차단 예시

PreToolUse 훅은 Claude가 민감한 파일을 읽거나 수정하려 할 때 이를 검사합니다. 보호된 경로와 일치하면, 훅은 거부 결정을 이유와 함께 반환하고, Claude는 해당 이유를 피드백으로 받습니다:

result = {
    "hookSpecificOutput": {
        "hookEventName": "PreToolUse",
        "permissionDecision": "deny",
        "permissionDecisionReason": "authe.me policy: .env is a protected path."
    }
}

Claude는 거부 이유를 보고 계획을 조정합니다.

설치

mkdir -p ~/.claude/hooks ~/.authe
curl -fsSL https://raw.githubusercontent.com/autheme/claude-code-hook/main/authe-hook.py \
    -o ~/.claude/hooks/authe-hook.py
chmod +x ~/.claude/hooks/authe-hook.py

훅 설정

~/.claude/settings.json에 다음을 추가합니다:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "AUTHE_HOOK_EVENT=PostToolUse python3 ~/.claude/hooks/authe-hook.py"
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "AUTHE_HOOK_EVENT=Stop python3 ~/.claude/hooks/authe-hook.py"
          }
        ]
      }
    ]
  }
}

이 훅은 단일 파일이며, 외부 의존성이 없고 순수 파이썬으로 작성되었습니다.

향후 계획

  • 원격 보고 – 세션 및 에이전트 전반에 걸친 점수를 집계합니다.
  • OpenClaw 플러그인 – OpenClaw 생태계에 동일한 기능을 제공합니다.

저장소는 다음에서 확인할 수 있습니다:

Claude로 제작되었습니다. 프로덕션 환경에서 Claude Code를 사용하고 계신 분들의 피드백을 환영합니다.

0 조회
Back to Blog

관련 글

더 보기 »