내가 Claude Code용 신뢰 점수 훅을 만든 방법
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
점수 모델
신뢰 점수는 세 차원의 가중 조합으로 계산됩니다:
| 차원 | 가중치 | 설명 |
|---|---|---|
| Reliability | 40 % | 성공적으로 수행된 도구 호출 비율. |
| Scope | 35 % | 에이전트가 허용된 도구와 경로 내에 머물렀는지 여부. 위반당 점수가 25점씩 감소합니다. |
| Cost | 25 % | 수행된 도구 호출 수. 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를 사용하고 계신 분들의 피드백을 환영합니다.