Hooks 개요

IDE에서 발생하는 이벤트에 맞춰 미리 정의한 Agent 동작이나 셸 명령을 자동으로 실행해 반복 작업을 줄여주는 자동화 도구입니다.

Agent hook이란?

Agent hook은 특정 IDE 이벤트가 발생했을 때 미리 작성해 둔 Agent 프롬프트나 셸 명령을 자동으로 실행하는 트리거입니다. 일상적으로 반복하던 작업을 매번 직접 요청하지 않아도 되고, 코드베이스 전반에 걸쳐 동일한 규칙을 일관되게 적용할 수 있습니다.

대표적인 트리거 이벤트는 다음과 같습니다.

Agent hook을 적극적으로 활용하면 다음과 같은 이점을 얻을 수 있습니다.

동작 방식

hook 시스템은 두 단계의 흐름으로 동작합니다.

  1. 이벤트 감지 — IDE에서 미리 지정한 이벤트가 발생하는지 모니터링합니다.
  2. 자동 실행 — 이벤트가 감지되면 등록해 둔 Agent 프롬프트 혹은 셸 명령이 즉시 실행됩니다.

이러한 구조 덕분에 포매팅, 테스트 실행, 문서 갱신과 같은 반복적인 작업이 자동으로 처리되고, 작은 사이드 프로젝트부터 대규모 모노레포까지 동일한 방식으로 일관성을 유지할 수 있습니다.

hook 설정하기

팁: IDE 1.0에서는 hook 생성 UI가 변경되었습니다. 바뀐 흐름과 마이그레이션 단계는 IDE 1.0 새 기능에서 확인하세요.

hook을 만드는 방법은 세 가지입니다. 자연어로 원하는 워크플로를 설명하는 방식, 폼을 직접 채워 세부 항목을 지정하는 방식, 그리고 JSON 파일을 직접 작성하는 방식입니다.

JSON 파일 형식

hook은 워크스페이스의 .kiro/hooks/에 저장되는 JSON 파일입니다.

{
  "version": "v1",
  "hooks": [
    {
      "name": "lint-on-save",
      "trigger": "PostFileSave",
      "matcher": "\\.ts$",
      "action": { "type": "command", "command": "npm run lint" },
      "timeout": 30,
      "enabled": true
    }
  ]
}
필드타입필수기본값설명
namestring텔레메트리에 표시되는 식별자
descriptionstring아니오문서화 용도
triggerstringhook이 실행되는 시점
matcherregex string아니오항상 매칭도구 이름 또는 파일 경로로 필터링
actionobjectAgent 프롬프트 또는 셸 명령
timeoutinteger (초)아니오600이면 타임아웃 비활성화. Agent 액션에서는 무시됨
enabledboolean아니오truefalse로 두면 삭제하지 않고 건너뜀

UI에서 hook 만들기

  1. Kiro 패널에서 Agent Hooks 섹션으로 이동합니다.
  2. + 버튼을 눌러 새 hook 만들기를 시작합니다.
  3. 다음 두 가지 생성 방식 중 하나를 선택합니다.
    • Manually create a hook — 폼에서 항목을 직접 채워 구성
    • Ask Kiro to create a hook — 자연어 설명으로 Kiro가 자동 생성
Command Palette에서도 바로 열 수 있습니다. Cmd + Shift + P (Mac) 또는 Ctrl + Shift + P (Windows/Linux)를 누르고 Kiro: Open Kiro Hook UI를 입력해 실행하세요.

Ask Kiro to create a hook

  1. Ask Kiro to create a hook을 선택합니다.
  2. 실행하고 싶은 작업의 흐름을 자연어로 설명합니다. 예: "TypeScript 파일을 저장하면 ESLint를 실행하라."
  3. Enter를 누르거나 Submit 버튼을 클릭합니다.
  4. Kiro가 만들어 준 설정을 확인하고 필요한 부분을 수정한 뒤 Save Hook을 클릭해 저장합니다.

Manually create a hook

  1. Manually create a hook을 선택해 hook 작성 폼을 엽니다.
  2. 각 항목을 다음과 같이 채웁니다.
    • Title — hook을 식별할 짧은 이름
    • Description — 어떤 일을 하는지에 대한 간단한 설명
    • Event — 트리거 종류. 예: File Save, Post Tool Use, Pre Task Execution
    • Tool name — Pre/Post Tool Use 이벤트를 사용할 때 어떤 도구를 대상으로 할지 지정
    • File pattern — 파일 관련 이벤트에서 매칭할 파일 패턴
    • ActionAsk Kiro(Agent 프롬프트)와 Run Command(셸 명령) 중 선택
    • Instructions 또는 Command — 실제로 실행할 프롬프트나 셸 명령 입력
  3. 입력이 끝나면 Create Hook을 눌러 저장하거나, 처음부터 다시 시작하려면 Clear를 눌러 폼을 초기화합니다.
주의: 셸 명령을 실행하는 hook은 로컬 환경에 직접 영향을 줍니다. 파일을 수정하거나 외부 시스템을 호출하는 명령을 등록할 때는 의도치 않은 부작용이 없는지 충분히 검토한 뒤 저장하세요.

트리거 레퍼런스

트리거발생 시점Matcher 매칭 대상차단 가능
SessionStart세션이 시작될 때아니오
StopAgent가 턴을 완료할 때아니오
PreToolUse도구 실행 직전도구 이름 (regex)
PostToolUse도구 실행 직후도구 이름 (regex)아니오
PreTaskExecSpec 작업이 시작되기 직전
PostTaskExecSpec 작업이 끝난 직후아니오
UserPromptSubmit사용자가 프롬프트를 제출할 때
PostFileCreateAgent가 파일을 생성한 직후파일 경로 (regex)아니오
PostFileSaveAgent가 파일을 저장한 직후파일 경로 (regex)아니오
PostFileDeleteAgent가 파일을 삭제한 직후파일 경로 (regex)아니오
팁: 수동(manual) hook은 수동 Steering 파일로 대체되었습니다. 자세한 내용은 Steering을 참고하세요.

종료 코드 동작

command 액션의 경우 종료 코드에 따라 다음과 같이 동작합니다.

종료 코드동작
0성공. STDOUT이 컨텍스트에 추가되거나(SessionStart, UserPromptSubmit) 무시됩니다(그 외).
2실행 차단(PreToolUse, UserPromptSubmit, PreTaskExec에서만). STDERR이 Agent에 반환됩니다.
그 외사용자에게 경고가 표시됩니다. 도구 실행은 계속 진행됩니다.

다음으로 읽을 만한 문서