구글 안티그래비티 완전 분석 — 모델·요금제·CLI 총정리

🚀 구글 안티그래비티(Antigravity) 완전 분석 구글이 2025년 11월 Gemini 3와 함께 공개한 에이전트 퍼스트(agent-first) IDE 안티그래비티는 Claude·GPT·Gemini를 한 도구에서 골라 쓰는 멀티모델 코딩 환경이다. 이 글에서는 ① 지원 모델과 요금제별 사용량의 실체, ② 실사용자 평가, ③ 구글의 방향성, ④ Claude Code와의 비교·연계, ⑤ CLI( agy )로 직접 쓰는 법까지 다섯 갈래를 차례로 정리한다. 자료 간 충돌이 있는 지점은 한쪽으로 단정하지 않고 양쪽을 모두 살려 표기했다. 📅 기준 시점: 2026년 6월 · 프리뷰 단계 정보로 수치는 변동 가능 1. 안티그래비티란 무엇인가 — 기초 정리 안티그래비티는 2025년 7월 구글이 24억 달러 규모 라이선스 계약 으로 영입한 전 Windsurf 팀이 설계를 주도했다. VSCode를 포크한 위에 자율 에이전트 오케스트레이션 계층을 얹은 구조다. 2026년 5월 Google I/O에서 발표된 안티그래비티 2.0 은 데스크탑 앱과 함께 공식 CLI agy 를 처음 공개하며 기존 Gemini CLI의 공식 후계자 자리를 확정했다. 핵심 정체성은 단순 코드 자동완성이 아니라 병렬 에이전트 오케스트레이션 이다. 여러 에이전트가 동시에 — 하나는 API, 하나는 테스트, 또 하나는 프론트엔드 — 작업을 나눠 진행하고, 각 에이전트는 계획·테스트 결과·스크린샷·영상을 담은 Artifact 를 남긴다. "사람이 한 줄씩 승인"하는 방식이 아니라 "에이전트들이 일을 마치고 사람이 사후 검수"하는 모델이다. flowchart TD A([사용자 작업 지시]) --> B[에이전트 A API 구현] A --> C[에이전트 B 테스트 작성] A --> D[에이전트 C UI 생성] B --> E[Artifact 계획·결과·영상] C --> E D --> E...

클로드 Hooks vs Skills, 자율 에이전트 통제 전략

클로드 Hooks 심층 분석 — Skills와의 차이, 그리고 고품질 결과를 위한 조합 전략

2026년 5월 · AI 에이전트 엔지니어링 · 심층 리포트

🧠 한 줄 요약 — Anthropic의 클로드 코드(Claude Code)가 본격적인 자율 에이전트 워크플로로 진화하면서, Hooks(시스템 강제 실행)Skills(모델 자율 호출)의 분리 설계가 상용 품질의 핵심 분기점이 되었습니다. "규칙은 Hooks로, 지식은 Skills로"가 정답입니다.

1. 들어가며 — 왜 지금 Hooks인가

Anthropic의 클로드 코드(Claude Code)와 에이전트 SDK가 본격적인 자율 에이전트 워크플로로 자리잡으면서, 모델의 자율성시스템의 통제 사이에서 균형을 잡는 것이 가장 큰 엔지니어링 과제로 떠올랐습니다. 2024년까지의 LLM 활용은 "프롬프트 잘 쓰기"가 전부였다면, 2025~2026년의 에이전트는 파일을 직접 수정하고, 셸 명령을 실행하며, 외부 API를 호출하는 행위 주체입니다. 이 차원에서는 더 이상 "모델이 알아서 잘 하겠지"가 통하지 않습니다.

Hooks는 바로 이 지점에서 등장한 결정론적 제어 장치이며, Skills(스킬)와 보완 관계에 있습니다. 본 보고서는 (i) Hooks의 정의·작동 방식·설정법, (ii) Skills와의 본질적 차이, (iii) 두 기능을 어떻게 조합해야 상용 수준의 결과물을 얻는지에 대해 라운드별 조사 결과를 종합하고, 실제 적용 시 주의해야 할 보안·운영 이슈까지 다룹니다.

📌 이 글이 답하는 질문

▶ Hooks와 Skills는 정확히 무엇이 다른가?
▶ 언제 Hooks를 써야 하고 언제 Skills를 써야 하는가?
▶ 둘을 조합해 신뢰 가능한 자율 에이전트를 만들려면?
▶ Hooks 사용 시 반드시 알아야 할 보안 함정은?

2. Hooks의 정의와 도입 시점

2.1 정의 — 라이프사이클 이벤트의 강제 실행

Hooks는 클로드 에이전트 라이프사이클의 특정 이벤트가 발생할 때 자동으로 실행되는 사용자 정의 스크립트/명령입니다. Git Hooks(`pre-commit`, `post-merge` 등)·Webhooks와 같은 전통적 개념의 연장선상에 있으며, 모델의 판단이 아니라 시스템 차원에서 강제 실행된다는 점이 핵심입니다.

즉 LLM이 "이건 위험하니 안 해야겠다"라고 판단해주기를 기대하는 것이 아니라, 시스템이 도구 실행 직전에 반드시 끼어들어 검사하고, 통과하지 못하면 차단하는 구조입니다. 이는 항공기의 페일세이프(fail-safe) 메커니즘과 유사합니다 — 조종사의 판단력에 의존하지 않고, 한계 영역에서는 시스템이 강제 개입합니다.

2.2 공식화 시점 — 자료 간 모순과 합리적 해석

조사 라운드별로 도입 시점에 대한 표현이 달랐습니다.

⚠️ 자료 간 표현 차이

Round 1: "2025~2026년에 공식 기능으로 확립"

Round 2: "Claude Code가 2025년에 공식 도입"

Round 3: "2025년 공식 문서, 보안 패치 v2.1.53 / CVE-2025-59536 추적"

세 자료를 종합하면 "2025년에 공식 기능으로 도입되었고, 2025~2026년에 걸쳐 보안·기능 패치가 누적"되었다고 보는 것이 가장 안전한 해석입니다. 정확한 첫 릴리스 일자는 자료마다 표현이 달라 추가 확인이 필요하지만, 적어도 2025년 하반기 이후로는 프로덕션 단위에서 다뤄지는 안정 기능이라고 판단할 수 있습니다.

3. 설정 방법 — `.claude/settings.json`

Hooks는 프로젝트 루트의 .claude/settings.json 또는 글로벌 ~/.claude/settings.json에서 설정합니다. 프로젝트별 설정이 글로벌 설정보다 우선 적용되며, 동일 이벤트에 여러 훅을 연결할 수도 있습니다.

3.1 스키마 — 두 가지 형태

자료 간 스키마 표현이 갈렸습니다. Round 1 자료는 이벤트마다 `matcher`(어떤 도구에 적용할지)와 `hooks` 배열을 갖는 확장형 구조를 제시합니다. 도구별로 정밀한 제어가 필요할 때 적합합니다.

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "./scripts/firewall.sh" }
        ]
      }
    ]
  }
}

반면 Round 2 자료는 이벤트명을 키로, 명령 문자열을 값으로 갖는 단축 구조를 제시합니다. 이벤트 단위로 일괄 처리할 때 적합합니다.

{
  "hooks": {
    "SessionStart": "echo 'Session started at $(date)' >> session.log",
    "PreToolUse": "python3 security_check.py"
  }
}

두 형태가 모두 통용되는지 한쪽이 약식 표기인지에 대해서는 자료가 충돌합니다. 실무 권장은 본인 환경의 클로드 코드 버전 공식 문서로 스키마를 한 번 더 검증한 뒤 사용하는 것입니다. 도구별 매처가 필요하면 확장형, 이벤트 단위만 다루면 단축형이 유리하다는 정도가 안전한 일반화입니다.

3.2 실행 방식과 종료 코드(Exit Code)

Hooks의 실행 결과는 프로세스 종료 코드로 모델에게 전달됩니다.

Exit Code 의미 동작
0 성공 stdout이 컨텍스트에 주입 가능
2 차단(Block) PreToolUse 시 도구 실행 차단, stderr가 모델에 전달
기타 일반 실패 에러 로깅, 흐름은 계속될 수 있음

자료에 따르면 type: "command" 외에도 `http`(HTTP 엔드포인트), `prompt`(LLM 프롬프트), `agent`(서브에이전트 호출) 형태도 지원됩니다(Round 3). 즉 단순 셸 스크립트뿐 아니라 외부 API 콜이나 별도 LLM 평가까지 훅으로 박을 수 있다는 의미입니다.

4. 주요 라이프사이클 이벤트

Round 3 자료에 따르면 총 15개 이벤트가 존재하지만, 실무에서 가장 자주 쓰이는 7개를 정리하면 다음과 같습니다.

이벤트 발생 시점 대표 용도
SessionStart 세션 시작/재개 Git 브랜치·이슈 컨텍스트 주입
UserPromptSubmit 유저 입력 직후 입력 필터링, 비밀정보 마스킹
PreToolUse 도구 실행 직전 위험 명령 차단, 정책 검사 ⚠️
PostToolUse 도구 실행 성공 직후 자동 린트·포맷·테스트 ✅
SubagentStop 서브에이전트 종료 결과 집계, 후처리
PreCompact 컨텍스트 요약 직전 보존 데이터 보호
Stop 에이전트 응답 완료 최종 검증, 알림 발송

4.1 라이프사이클 흐름도 — 한눈에 보는 훅 발화 시점

SessionStart 컨텍스트 주입 UserPromptSubmit 입력 필터링 PreToolUse 위험 명령 차단 도구 실행 (Bash/Edit/...) PostToolUse 린트·테스트 Stop 최종 검증·알림

▲ 일반적 단일 도구 호출 시 훅 발화 순서 (점선 = 도구 결과 모델로 환류)

5. Hooks vs Skills — 본질적 차이

가장 흔한 혼동은 "둘 다 기능을 확장하는데 무엇이 다른가"입니다. 핵심은 주도권(Who decides?)결정론성(Deterministic vs Probabilistic)입니다.

구분 🔒 Hooks 🧠 Skills
주도권 시스템 (System-driven) — 강제 실행 모델 (Agent-driven) — 자율 호출
결정론성 결정론적, 같은 입력 → 같은 행동 확률적, 모델 판단에 따라 달라짐
실행 트리거 라이프사이클 이벤트 자연어 추론 결과
주된 목적 가드레일·보안·자동화·로깅 도메인 전문성·복잡한 도구 사용
비유 공장 자동화 라인의 센서·차단기 필요할 때 부르는 전문가 컨설턴트

🧠 한 줄 정리 — "반드시 매번 일어나야 하는 일은 Hooks, 모델이 똑똑하게 판단해서 쓰면 좋은 능력은 Skills"

6. 고품질 결과를 얻기 위한 조합 전략

6.1 핵심 원칙 — "Trust, but Verify"

"믿되 검증하라"는 레이건 시대의 외교 슬로건이지만, 자율 에이전트 운영에서는 이만큼 적절한 표어가 없습니다. 모델을 신뢰해 자유도를 주되(Skills), 시스템 차원에서 결과를 기계적으로 확인(Hooks)하는 이중 구조입니다.

✅ 1단계 — Skills로 지능을 증폭

프로젝트 컨벤션·라이브러리 사용법·도메인 지식을 Skill로 외부화하여 모델이 좋은 코드를 처음부터 쓰도록 유도합니다.

✅ 2단계 — Hooks로 자동 검증

PostToolUse 훅으로 린트·테스트·빌드를 자동 실행하여, 모델이 산출한 코드가 실제로 동작하는지 기계적으로 확인합니다.

✅ 3단계 — 피드백 루프 폐쇄

훅이 실패(non-zero exit)를 반환하면 모델은 즉시 그 결과를 받아 자기 수정에 들어갑니다 — 사람의 개입 없이 품질이 수렴합니다.

6.2 시나리오별 조합 예시

시나리오 🔒 Hooks 역할 🧠 Skills 역할
보안 강화형 PreToolUse: .env·개인키·rm -rf 차단 Security Auditor Skill: OWASP 관점 리뷰
품질 자동화형 PostToolUse: lint·pytest·tsc 자동 실행 Architect Skill: 리팩토링·모듈 경계
컨텍스트 최적화형 SessionStart: README·이슈·diff 자동 주입 Domain Skill: 비즈니스 규칙·용어집

6.3 품질 자동화형 시나리오의 의사결정 흐름

모델 코드 작성 Edit/Write 도구 실행 PostToolUse Hook lint + test 통과? YES NO 완료·커밋 사용자 승인 대기 자기 수정 루프 stderr 받아 재시도

▲ Hook이 검증을 떠맡으면 모델은 본업(추론·생성)에 집중할 수 있다

6.4 권장 설계 사고

"반드시 지켜야 하는 규칙은 Hooks로, 모델이 참고해야 할 전문 지식은 Skills로."

이 분리가 명확할수록 시스템은 예측 가능해지고, 모델은 자신이 잘하는 일(추론·생성)에 집중할 수 있습니다.

7. 보안 유의사항 — 절대 가볍게 보지 말 것

Round 3 자료는 Hooks가 본질적으로 임의 코드 실행(Arbitrary Code Execution) 권한을 갖는다는 점에서 비롯되는 보안 위험을 강조합니다. 즉 신뢰할 수 없는 리포지토리를 클론한 뒤 무심코 `claude` 명령을 실행하는 순간, 그 리포의 `.claude/settings.json`에 박힌 악성 훅이 즉시 로컬에서 실행될 수 있다는 의미입니다.

7.1 알려진 CVE

CVE 번호 취약점 유형 대응
CVE-2025-59536 악성 SessionStart 훅으로 임의 코드 실행 v2.1.53+ 업데이트, Workspace Trust 활성
CVE-2026-33068 리포 설정이 사용자 승인보다 먼저 처리되는 권한 우회 최신 버전 유지, `.claude/` 사전 검토

7.2 실무 체크리스트

🔴 반드시 확인할 사항

▶ Claude Code v2.1.53 이상으로 업데이트 (Workspace Trust 도입)

▶ 처음 보는 리포지토리에서는 `claude` 실행 전 `.claude/` 디렉토리 반드시 검토

▶ 필요 시 글로벌 설정에서 "disableHooks": true로 비활성화

▶ 팀 단위 운영 시 settings.json을 코드 리뷰 대상에 포함

7.3 성능 함정 — 동기 실행

또한 훅은 동기적으로 실행되므로, 무거운 작업(대규모 테스트 등)을 직접 박으면 CLI 응답성이 크게 떨어집니다. 예컨대 매 도구 호출 직후 5분짜리 통합 테스트를 돌리도록 박아두면, 사용자는 매번 5분씩 멍하니 기다려야 합니다. 이런 작업은 백그라운드 프로세스로 분리하거나, `Stop` 이벤트에서 사후 검증으로 돌리는 편이 낫습니다.

7.4 Hook 반응 시간 권장 가이드

PreToolUse 검사
< 100ms
PostToolUse 린트
~ 1초
PostToolUse 테스트
~ 5초
통합 테스트(권장X)
5분+

▲ 훅 실행 시간이 길수록 사용자 체감 응답성은 급락 — Stop 이벤트로 분리 권장

8. 결론 및 시사점

Hooks는 클로드 에이전트를 "똑똑한 챗봇"에서 "신뢰할 수 있는 동료 엔지니어"로 격상시키는 마지막 한 조각입니다. 모델이 아무리 똑똑해도 시스템적으로 강제되는 가드레일과 자동화 없이는 상용 환경의 신뢰 수준에 도달하기 어렵습니다. 반대로 Hooks만으로는 창의적·전문적 판단을 다 담을 수 없으며, 이를 보완하는 것이 Skills입니다.

8.1 단계별 도입 로드맵

1주차
SessionStart 도입
2주차
PostToolUse 린트
3주차
PreToolUse 보안
4주차+
Skills 통합

처음부터 모든 훅을 박지 말고, 위험도가 낮은 정보 주입(SessionStart)부터 시작해 점진적으로 검증·차단 훅을 추가하는 것이 안전합니다. 매 단계마다 팀 내 사용자 피드백을 받아 응답성·정확성을 조정하세요.

8.2 마지막 권고

본 조사에서 자료 간 모순(공식화 시점, settings.json 스키마)이 일부 확인되었으므로, 실제 구축 시에는 본인이 사용하는 클로드 코드 버전의 공식 문서(docs.anthropic.com/.../claude-code/configuration.../security)에서 정확한 스키마와 이벤트 목록을 한 번 더 검증하시길 권합니다.

그 다음 단계는 단순합니다 — "규칙은 Hooks로, 지식은 Skills로" 분리하고, 둘을 연결하는 피드백 루프를 만드는 것입니다. 자율 에이전트의 시대는 이미 시작되었고, 이제는 그 자율성을 어떻게 책임 있게 다룰지가 모든 엔지니어의 과제입니다.

🧠 Final Insight

자율 에이전트의 본질적 딜레마는 "자유를 줄수록 위험해지고, 통제할수록 멍청해진다"는 것입니다. Hooks와 Skills는 이 딜레마에 대한 Anthropic의 답입니다 — "통제는 시스템에, 자유는 모델에" 분리함으로써, 양쪽 모두를 최대화할 수 있습니다.

📚 References

본 콘텐츠는 정보 제공 목적이며, 보안·운영 결정은 반드시 본인 환경의 공식 문서와 정책에 따라 검증해야 합니다. 잘못된 훅 설정으로 인한 데이터 손실·보안 사고에 대해 작성자는 책임지지 않습니다.

📄 Raw Data
# 클로드 Hooks 심층 분석 — Skills와의 차이, 그리고 고품질 결과를 위한 조합 전략

## 1. 들어가며: 왜 지금 Hooks인가

Anthropic의 클로드 코드(Claude Code)와 에이전트 SDK가 본격적인 자율 에이전트 워크플로로 자리잡으면서, **모델의 자율성**과 **시스템의 통제** 사이에서 균형을 잡는 것이 가장 큰 엔지니어링 과제로 떠올랐습니다. Hooks는 바로 이 지점에서 등장한 **결정론적 제어 장치**이며, Skills(스킬)와 보완 관계에 있습니다. 본 보고서는 (i) Hooks의 정의·작동 방식·설정법, (ii) Skills와의 본질적 차이, (iii) 두 기능을 어떻게 조합해야 상용 수준의 결과물을 얻는지에 대해 라운드별 조사 결과를 종합합니다.

---

## 2. Hooks의 정의와 도입 시점

### 2.1 정의
Hooks는 **클로드 에이전트 라이프사이클의 특정 이벤트가 발생할 때 자동으로 실행되는 사용자 정의 스크립트/명령**입니다. Git Hooks·Webhooks와 같은 전통적 개념의 연장선상에 있으며, 모델의 판단이 아니라 시스템 차원에서 **강제 실행**된다는 점이 핵심입니다(Anthropic Claude Code Configuration Docs).

### 2.2 공식화 시점에 대한 자료 간 모순
- **Round 1 자료**는 "2025~2026년에 클로드 코드와 에이전트 SDK의 공식 기능으로 확립"이라며 비교적 폭넓게 기술합니다.
- **Round 2 자료**는 "Anthropic의 Claude Code가 2025년에 공식 도입"이라며 더 구체적으로 시점을 못박습니다.
- **Round 3 자료**는 "2025년 기준 공식 문서"와 "2025-08 update"를 인용하며, 보안 패치 버전(`v2.1.53`, CVE-2025-59536)까지 추적합니다.

세 자료를 종합하면 "**2025년에 공식 기능으로 도입되었고, 2025~2026년에 걸쳐 보안·기능 패치가 누적**"되었다고 보는 것이 가장 안전한 해석입니다. 정확한 첫 릴리스 일자는 자료마다 표현이 달라 추가 확인이 필요합니다.

---

## 3. 설정 방법: `.claude/settings.json`

Hooks는 프로젝트 루트의 `.claude/settings.json` 또는 글로벌 `~/.claude/settings.json`에서 설정합니다.

### 3.1 스키마에 대한 자료 간 모순
**Round 1 자료**는 이벤트마다 `matcher`와 `hooks` 배열을 갖는 **확장형 구조**를 제시합니다.

```json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "./scripts/firewall.sh" }
        ]
      }
    ]
  }
}
```

반면 **Round 2 자료**는 이벤트명을 키로, 명령 문자열을 값으로 갖는 **단축 구조**를 제시합니다.

```json
{
  "hooks": {
    "SessionStart": "echo 'Session started at $(date)' >> session.log",
    "PreToolUse": "python3 security_check.py"
  }
}
```

두 형태가 모두 실제로 통용되는지, 아니면 한쪽이 구버전·약식 표기인지에 대해서는 자료가 충돌합니다. **현실적으로는 도구별 매처가 필요한 시나리오(`PreToolUse`에서 Bash만 가로채기 등)에서는 Round 1의 확장형이, 이벤트 단위 일괄 처리만 필요한 경우에는 Round 2의 단축형이 사용된다고 추정**되지만, 본인 환경에서는 **반드시 설치된 클로드 코드 버전의 공식 문서로 스키마를 재확인**해야 합니다.

### 3.2 실행 방식과 종료 코드 의미(Exit Code)
- **`type: "command"`** — 셸 스크립트, Python, JS 등 임의 명령 실행
- 그 외 자료에 따르면 **`http`(HTTP 엔드포인트), `prompt`(LLM 프롬프트), `agent`(서브에이전트 호출)** 형태도 지원(Round 3)
- 종료 코드 의미:
  - `0` — 성공. `stdout`은 컨텍스트 주입에 사용 가능
  - `2` — 차단(Block). `PreToolUse`에서 반환 시 해당 도구 실행이 차단되며, `stderr` 메시지가 모델에 전달됨

---

## 4. 주요 라이프사이클 이벤트

세 라운드 자료를 종합한 핵심 이벤트는 다음과 같습니다(Round 3은 "총 15개 이벤트가 존재"한다고 명시).

| 이벤트 | 발생 시점 | 대표 용도 |
| :--- | :--- | :--- |
| `SessionStart` | 세션 시작/재개 | Git 브랜치·이슈 등 컨텍스트 주입 |
| `UserPromptSubmit` | 유저 입력 직후, 모델 전송 전 | 입력 필터링, 비밀정보 마스킹, 컨텍스트 보강 |
| `PreToolUse` | 도구 실행 직전 | 위험 명령 차단, 정책 검사 |
| `PostToolUse` | 도구 실행 성공 직후 | 자동 린트·포맷·테스트 실행 |
| `SubagentStop` | 서브에이전트 종료 시 | 결과 집계, 후처리 |
| `PreCompact` | 컨텍스트 요약 직전 | 보존해야 할 데이터 보호 |
| `Stop` | 에이전트 응답 완료 | 최종 검증, 알림 발송 |

---

## 5. Hooks vs Skills — 본질적 차이

가장 흔한 혼동은 "둘 다 기능을 확장하는데 무엇이 다른가"입니다. 핵심은 **주도권(Who decides?)**과 **결정론성(Deterministic vs Probabilistic)**입니다.

| 구분 | **Hooks** | **Skills** |
| :--- | :--- | :--- |
| 주도권 | **시스템(System-driven)** — 이벤트 발생 시 강제 실행 | **모델(Agent-driven)** — 모델이 필요하다고 판단할 때 호출 |
| 결정론성 | 결정론적, 항상 같은 입력에 같은 행동 | 확률적, 모델 판단에 따라 호출 여부가 달라짐 |
| 실행 트리거 | 라이프사이클 이벤트 | 모델의 자연어 추론 결과 |
| 주된 목적 | 가드레일·보안·자동화·로깅 | 도메인 전문성, 복잡한 도구 사용, API 연동 |
| 비유 | 공장 자동화 라인의 **센서·차단기** | 필요할 때 부르는 **전문가 컨설턴트** |

요약하면: **"반드시 매번 일어나야 하는 일은 Hooks, 모델이 똑똑하게 판단해서 쓰면 좋은 능력은 Skills"**.

---

## 6. 고품질 결과를 얻기 위한 조합 전략

### 6.1 핵심 원칙: "Trust, but Verify"
1. **Skills로 지능을 증폭**: 프로젝트 컨벤션·라이브러리 사용법·도메인 지식을 Skill로 외부화하여 모델이 좋은 코드를 *처음부터* 쓰도록 유도.
2. **Hooks로 자동 검증**: `PostToolUse` 훅으로 린트·테스트·빌드를 자동 실행하여, 모델이 산출한 코드가 실제로 동작하는지 *기계적으로* 확인.
3. **피드백 루프 폐쇄**: 훅이 실패(non-zero exit)를 반환하면 모델은 즉시 그 결과를 받아 자기 수정에 들어감 — 사람의 개입 없이 품질이 수렴.

### 6.2 시나리오별 조합 예시
- **보안 강화형**
  - `PreToolUse` 훅: `.env`·개인키·`rm -rf` 등 위험 패턴 차단
  - `Security Auditor Skill`: 코드 변경분에 대한 OWASP 관점 리뷰 수행
- **품질 자동화형**
  - `PostToolUse` 훅: `npm run lint --fix`, `pytest`, `tsc --noEmit` 자동 실행
  - `Architect Skill`: 리팩토링 설계, 모듈 경계 의사결정 담당
- **컨텍스트 최적화형**
  - `SessionStart` 훅: `README.md`, 최근 이슈, 현재 브랜치 diff를 자동 주입
  - `Domain Skill`: 해당 프로젝트 특유의 비즈니스 규칙·용어집 제공

### 6.3 권장 설계 사고
> **"반드시 지켜야 하는 규칙은 Hooks로, 모델이 참고해야 할 전문 지식은 Skills로."**

이 분리가 명확할수록 시스템은 예측 가능해지고, 모델은 자신이 잘하는 일(추론·생성)에 집중할 수 있습니다.

---

## 7. 보안 유의사항 — 절대 가볍게 보지 말 것

Round 3 자료는 Hooks가 본질적으로 **임의 코드 실행(Arbitrary Code Execution) 권한**을 갖는다는 점에서 비롯되는 보안 위험을 강조합니다.

- **CVE-2025-59536**: 신뢰할 수 없는 리포지토리에 악의적인 `SessionStart` 훅이 포함된 `.claude/settings.json`이 있으면, `claude` 실행 즉시 로컬에서 임의 코드가 실행될 수 있음.
- **CVE-2026-33068**: 리포지토리 설정이 사용자 승인보다 먼저 처리되는 권한 우회 취약점.
- **대응**:
  - Claude Code **v2.1.53 이상**으로 업데이트(Workspace Trust 도입)
  - 처음 보는 리포지토리에서는 **`claude` 실행 전 `.claude/` 디렉토리를 반드시 검토**
  - 필요 시 글로벌 설정에서 `"disableHooks": true`로 비활성화

또한 훅은 **동기적으로 실행**되므로, 무거운 작업(대규모 테스트 등)을 직접 박으면 CLI 응답성이 크게 떨어집니다. 이런 작업은 백그라운드 프로세스로 분리하거나, `Stop` 이벤트에서 사후 검증으로 돌리는 편이 낫습니다.

---

## 8. 결론 및 시사점

Hooks는 클로드 에이전트를 "똑똑한 챗봇"에서 **"신뢰할 수 있는 동료 엔지니어"**로 격상시키는 마지막 한 조각입니다. 모델이 아무리 똑똑해도 **시스템적으로 강제되는 가드레일과 자동화** 없이는 상용 환경의 신뢰 수준에 도달하기 어렵습니다. 반대로 Hooks만으로는 창의적·전문적 판단을 다 담을 수 없으며, 이를 보완하는 것이 Skills입니다.

본 조사에서 자료 간 모순(공식화 시점, settings.json 스키마)이 일부 확인되었으므로, **실제 구축 시에는 본인이 사용하는 클로드 코드 버전의 공식 문서**(`docs.anthropic.com/.../claude-code/configuration` 및 `.../security`)에서 정확한 스키마와 이벤트 목록을 한 번 더 검증하시길 권합니다. 그 다음 단계는 단순합니다 — **"규칙은 Hooks로, 지식은 Skills로"** 분리하고, 둘을 연결하는 피드백 루프를 만드는 것입니다.

## 라운드 간 모순
- Round1은 훅 공식화 시점을 '2025~2026'로 폭넓게 기술한 반면 Round2는 'Claude Code가 2025년에 공식 도입'으로 더 구체적으로 명시 — 정확한 출시/공식화 시점 재확인 필요
- settings.json의 hooks 값 형태가 Round1은 '이벤트→matcher→hooks 배열' 객체 구조, Round2는 '이벤트→문자열 명령' 단축 구조로 서로 달라 실제 공식 스키마 검증 필요
---

## References

- [Anthropic Claude Code Configuration](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/configuration)
- [Anthropic Claude Code Security](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/security)
- [Anthropic Trust Center (CVE-2025-59536 advisory)](https://trust.anthropic.com)

댓글

이 블로그의 인기 게시물

Vim 9.2 릴리즈 총정리: 더 빠르고 강력해진 텍스트 편집의 제왕

폐쇄망 SoC 설계자를 위한 가볍고 빠른 Vim 최적화 가이드

에이전트 시대를 위한 터미널 cmux 가이드: 설치부터 AI 활용까지