
GitHub Copilot 에이전트 훅(Agent Hooks)이란?
2026년 3월 11일, GitHub는 GitHub Copilot for JetBrains IDEs의 대규모 업데이트를 발표했습니다. 이 업데이트에서 가장 주목할 기능이 바로 에이전트 훅(Agent Hooks)입니다.
에이전트 훅은 GitHub Copilot 에이전트 세션의 주요 이벤트 시점에 커스텀 명령을 실행하는 기능입니다. CI/CD 파이프라인의 웹훅처럼, AI 에이전트가 특정 작업을 수행하기 전·후에 여러분의 코드를 실행할 수 있습니다. 현재 공개 프리뷰(Public Preview) 단계입니다.

왜 에이전트 훅이 중요한가?
2026년은 에이전틱 AI(Agentic AI) 시대의 본격적인 시작입니다. GitHub Copilot이 단순한 코드 자동완성을 넘어 자율적으로 코드를 작성하고, 파일을 수정하고, 테스트를 실행하는 시대가 왔습니다.
하지만 AI 에이전트의 자율성은 동시에 통제의 필요성을 만들어냅니다. 에이전트 훅은 이 문제를 해결합니다:
- 보안 정책 적용: 에이전트가 특정 파일/디렉토리에 접근하기 전 권한 확인
- 워크플로우 자동화: 에이전트가 코드를 작성한 후 자동으로 테스트 실행
- 외부 도구 통합: 에이전트 작업과 Jira, Slack, 사내 시스템 연동
- 감사 로그: 에이전트가 수행한 모든 작업을 기록

에이전트 훅 설정 방법

hooks.json 파일 구성
에이전트 훅은 레포지토리의 .github/hooks/ 폴더에 hooks.json 파일을 생성해 설정합니다. 파일명은 자유롭게 지정할 수 있습니다.
// .github/hooks/my-hooks.json
{
"version": "1.0",
"hooks": [
{
"event": "preToolUse",
"filters": {
"tool": "write_file"
},
"command": "node scripts/check-file-policy.js",
"timeout": 30
},
{
"event": "postToolUse",
"filters": {
"tool": "bash"
},
"command": "npm run lint && npm test",
"timeout": 120,
"onFailure": "abort"
},
{
"event": "userPromptSubmitted",
"command": "node scripts/log-agent-session.js",
"async": true
},
{
"event": "errorOccurred",
"command": "node scripts/notify-slack.js",
"async": true
}
]
}
지원되는 훅 이벤트 4가지
1. userPromptSubmitted
사용자가 에이전트에게 프롬프트를 제출하는 순간 실행됩니다. 요청 유효성 검사, 감사 로그, 사용량 추적에 활용합니다.
// scripts/log-agent-session.js
// userPromptSubmitted 훅 — 에이전트 세션 로깅
const { prompt, sessionId, timestamp } = JSON.parse(process.env.HOOK_CONTEXT);
const log = {
event: 'agent_session_start',
sessionId,
prompt: prompt.substring(0, 100), // 처음 100자만 기록
user: process.env.GITHUB_USER,
timestamp,
};
// 감사 로그 서버로 전송
await fetch('https://audit.company.com/log', {
method: 'POST',
body: JSON.stringify(log),
});
2. preToolUse
에이전트가 도구(파일 쓰기, bash 명령 등)를 사용하기 직전에 실행됩니다. 보안 정책 적용에 가장 중요한 훅입니다.
// scripts/check-file-policy.js
// preToolUse 훅 — 파일 접근 정책 확인
const { tool, params } = JSON.parse(process.env.HOOK_CONTEXT);
// .env, secrets/ 폴더 접근 차단
const FORBIDDEN_PATTERNS = [/\.env/, /secrets\//, /\.pem$/, /private_key/];
if (tool === 'write_file') {
const filePath = params.path;
for (const pattern of FORBIDDEN_PATTERNS) {
if (pattern.test(filePath)) {
console.error(`🚫 접근 차단: ${filePath} — 보안 정책 위반`);
process.exit(1); // 종료 코드 1 = 에이전트 작업 중단
}
}
}
// 보호된 브랜치 파일은 쓰기 금지
if (tool === 'write_file' && params.path.includes('config/production')) {
console.error('🚫 프로덕션 설정 파일 직접 수정 불가');
process.exit(1);
}
console.log('✅ 파일 접근 정책 통과');
process.exit(0); // 정상 진행
3. postToolUse
에이전트가 도구를 사용한 직후에 실행됩니다. 자동 테스트, 린팅, 포맷팅 등 품질 보장 작업에 활용합니다.
// scripts/run-quality-checks.js
// postToolUse 훅 — 코드 품질 자동 검사
const { tool, result } = JSON.parse(process.env.HOOK_CONTEXT);
// 파일 수정 후에만 실행
if (tool !== 'write_file' && tool !== 'bash') process.exit(0);
const { execSync } = require('child_process');
try {
// TypeScript 타입 체크
execSync('npx tsc --noEmit', { stdio: 'pipe' });
console.log('✅ TypeScript 타입 체크 통과');
// ESLint
execSync('npx eslint src/', { stdio: 'pipe' });
console.log('✅ ESLint 검사 통과');
} catch (error) {
console.error('❌ 품질 검사 실패:', error.stdout?.toString());
// onFailure: "abort" 설정 시 에이전트 작업 중단
process.exit(1);
}
4. errorOccurred
에이전트 세션에서 오류가 발생했을 때 실행됩니다. Slack 알림, 에러 리포팅 등에 활용합니다.
// scripts/notify-slack.js
// errorOccurred 훅 — Slack 에러 알림
const { error, sessionId, context } = JSON.parse(process.env.HOOK_CONTEXT);
const message = {
text: `🚨 GitHub Copilot 에이전트 오류 발생`,
blocks: [
{
type: "section",
text: {
type: "mrkdwn",
text: `*세션:* ${sessionId}\n*오류:* ${error.message}\n*컨텍스트:* ${context}`
}
}
]
};
await fetch(process.env.SLACK_WEBHOOK_URL, {
method: 'POST',
body: JSON.stringify(message),
});
이번 업데이트의 다른 주요 기능들
커스텀 에이전트 & 서브에이전트 GA
커스텀 에이전트(Custom Agents), 서브에이전트(Sub-agents), 플랜 에이전트(Plan Agent)가 JetBrains IDEs에서 정식 출시(GA)되었습니다.
- 커스텀 에이전트: 팀/프로젝트별로 특화된 에이전트 프로필 생성
- 서브에이전트: 복잡한 작업을 여러 특화 에이전트가 분업 처리
- 플랜 에이전트: 큰 작업을 단계별 계획으로 나누어 실행
AGENTS.md와 CLAUDE.md 지원
이제 GitHub Copilot도 AGENTS.md와 CLAUDE.md 인스트럭션 파일을 지원합니다. 레포지토리의 규칙, 코딩 스타일, 프로젝트 컨벤션을 AI 에이전트에게 미리 알려줄 수 있습니다.
# AGENTS.md 예시
# 프로젝트 코딩 컨벤션
## 언어 및 프레임워크
- TypeScript 엄격 모드 사용 (strict: true)
- React 함수형 컴포넌트 only (클래스 컴포넌트 금지)
- 상태 관리: TanStack Query + Zustand
## 파일 네이밍
- 컴포넌트: PascalCase (UserProfile.tsx)
- 유틸리티: camelCase (formatDate.ts)
- 상수: UPPER_SNAKE_CASE
## 금지사항
- console.log 프로덕션 코드에 사용 금지
- any 타입 사용 금지
- secrets/ 폴더 절대 수정 금지
MCP 자동 승인 설정
MCP(Model Context Protocol) 서버와 도구별로 자동 승인을 설정할 수 있습니다. 매번 승인 창이 뜨는 번거로움 없이 에이전트 워크플로우를 자동화할 수 있습니다.
자동 모델 선택 GA
작업 유형에 따라 최적의 모델을 자동으로 선택하는 기능이 GA되었습니다. 간단한 코드 완성에는 가벼운 모델을, 복잡한 아키텍처 설계에는 강력한 모델을 자동으로 사용합니다.
에이전트 훅 활성화 방법
요구사항
- GitHub Copilot Business 또는 Enterprise 구독
- 관리자가 "Editor preview features" 정책 활성화
- JetBrains IDE (IntelliJ IDEA, WebStorm, PyCharm 등)
- GitHub Copilot 플러그인 최신 버전
설정 단계
- 레포지토리에
.github/hooks/폴더 생성 hooks.json파일 작성 (위 예시 참고)- 훅 스크립트 작성 및 레포지토리에 커밋
- JetBrains IDE에서 Copilot 에이전트 모드 활성화
- 채팅창에서 에이전트 작업 시작 — 훅이 자동으로 실행됨
실전 활용 시나리오
시나리오 1: 보안 강화된 AI 코딩 환경
금융, 의료 등 보안이 중요한 산업에서 에이전트 훅으로 AI 코딩의 안전성을 보장합니다.
preToolUse: 민감한 파일 접근 차단, GDPR 규정 파일 보호postToolUse: 자동 보안 스캔 (Snyk, Semgrep)userPromptSubmitted: 모든 에이전트 요청 감사 로그
시나리오 2: TDD 자동화
에이전트가 코드를 작성할 때마다 자동으로 테스트를 실행하여 TDD 원칙을 강제합니다.
postToolUse:npm test자동 실행, 실패 시 에이전트 중단- 에이전트가 테스트를 통과하는 코드만 작성하도록 유도
시나리오 3: 팀 협업 자동화
- 에이전트가 코드 작성 완료 시 → Slack/Teams 자동 알림
- 에이전트 PR 생성 시 → 코드 리뷰어 자동 할당
- 에이전트 세션 요약을 Confluence에 자동 기록
2026년 에이전틱 AI 개발의 미래
에이전트 훅은 단순한 편의 기능이 아닙니다. AI 에이전트가 점점 더 자율적으로 코드를 작성하는 시대에, 인간의 통제권을 유지하면서 AI의 생산성을 극대화하는 핵심 메커니즘입니다.
2026년 하반기에는 에이전트 훅이 정식 출시(GA)될 예정이며, VS Code와 다른 IDE로도 확장될 예정입니다. 지금 JetBrains 사용자라면 프리뷰 기간에 먼저 경험해보는 것을 추천합니다.