AI 뉴스 데일리팁English
← AI 도구 팁
Claude Code✓ 공식 문서로 확인10월 16일 수집

클로드 코드 PreToolUse 훅에서 updatedInput으로 명령을 고쳐 실행하는 법

클로드 코드(Claude Code)의 PreToolUse 훅으로 도구 호출을 막을 수도 있지만, 인자를 고쳐서 실행시킬 수도 있다. 훅이 updatedInput을 돌려주면 클로드가 보낸 인자 대신 그 값으로 도구가 돈다. 클로드가 pip install을 치려 할 때 uv pip install로 바꾸는 식이다.

  1. 프로젝트 .claude/settings.json에 훅을 등록한다. if로 걸러 두면 그 명령일 때만 스크립트가 뜬다.
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "if": "Bash(pip install *)",
            "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/pip-to-uv.sh"
          }
        ]
      }
    ]
  }
}
  1. .claude/hooks/pip-to-uv.sh를 만들고 실행 권한을 준다. jq가 필요하다.
#!/bin/bash
# .claude/hooks/pip-to-uv.sh
jq '.tool_input
  | .command |= sub("^pip install"; "uv pip install")
  | {hookSpecificOutput: {
      hookEventName: "PreToolUse",
      permissionDecision: "ask",
      permissionDecisionReason: "pip install을 uv pip install로 바꿨다",
      updatedInput: .
    }}'
chmod +x .claude/hooks/pip-to-uv.sh

updatedInput은 입력 객체를 통째로 갈아 끼운다. 위 스크립트가 tool_input을 받아 command만 고치는 건 description·timeout 같은 나머지 필드를 잃지 않으려고서다. 권한 규칙도 클로드가 보낸 입력이 아니라 훅이 돌려준 입력으로 따진다. permissionDecision을 "ask"로 두면 바뀐 명령을 확인 창에서 보고 승인하고, "allow"로 두면 묻지 않고 실행한다(deny·ask 규칙은 그래도 적용된다).

10월 14일 나온 2.1.300부터는 훅이 돌려준 updatedInput도 클로드가 만든 입력과 같은 검사를 거친다. 도구가 모르는 키는 버리고, 도구가 받지 않는 입력이면 그 호출을 거부한다. 필드 이름에 오타가 있으면 조용히 빠질 수 있으니 훅을 고친 뒤 한 번 돌려 본다. PermissionRequest 훅에서는 updatedInput을 decision 객체 안에 넣는다.

새 팁이 올라오면 앱이 알려 드려요

팁 알림은 앱에서만 보내요. 앱을 설치하고 알림을 켜 두세요.

앱 받기

팁 전체 보기 →