Post

[Tool] Kiro Custom Agents - 읽기전용 분석 에이전트로 코드 리뷰 안전하게 받기

Kiro의 Custom Agent 기능으로 코드 분석, 설계 리뷰, 보안 검증을 역할 분리하여 안전한 AI 코드 리뷰 환경을 구축한 경험

문제

AI 에이전트에게 “이 코드 리뷰해줘”라고 하면, 분석만 하는 게 아니라 바로 코드를 수정해버리는 경우가 있음. 리뷰를 요청한 건데 리팩토링을 시작하는 상황.

특히 보안 검증 시에는 더 위험함. “이 부분 취약점 있어?”라고 물었는데 에이전트가 “고쳐놨어요”라고 하면, 뭘 바꿨는지 확인하는 데 더 시간이 걸림.


해결: 읽기전용 분석 에이전트

Kiro의 Custom Agent는 allowedTools로 사용 가능한 도구를 제한할 수 있음. 이걸 활용해서 절대 코드를 수정하지 못하는 분석 전용 에이전트를 만듦.

에이전트 구성

1
2
3
4
5
.kiro/agents/
├── analyst-code.json      # 코드 분석 전용
├── analyst-design.json    # 설계 리뷰 전용
├── analyst-security.json  # 보안 검증 전용
└── ebt-dashboard.json     # 메인 개발 에이전트

analyst-code.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "name": "analyst-code",
  "description": "코드 분석 전용 (읽기 전용, 수정 불가)",
  "prompt": "너는 코드 분석 전문 에이전트다. 코드를 읽고 분석 결과만 리포트하라. 절대 코드를 수정하지 마라.\n\n분석 관점: 버그 가능성, 로직 오류, 타입 불일치, 에러 핸들링 누락, 엣지케이스",
  "allowedTools": [
    "read",
    "@sequential-thinking",
    "@serena/find_*",
    "@serena/read_*",
    "@serena/list_*",
    "@serena/get_*",
    "@serena/search_for_pattern"
  ]
}

핵심은 allowedToolswrite, shell, replace 같은 수정 도구를 아예 넣지 않는 것. 읽기 계열 도구만 허용하면 에이전트가 아무리 수정하고 싶어도 물리적으로 불가능함.

analyst-security.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
  "name": "analyst-security",
  "description": "보안 검증 전용 (읽기 전용, 수정 불가)",
  "prompt": "너는 보안 검증 전문 에이전트다. 코드를 읽고 보안 이슈만 리포트하라. 절대 코드를 수정하지 마라.\n\n분석 관점: 인증/인가 우회, 인젝션, 하드코딩된 시크릿, CORS 설정, 입력 검증, 권한 상승",
  "allowedTools": [
    "read",
    "@sequential-thinking",
    "@serena/find_*",
    "@serena/read_*",
    "@serena/list_*",
    "@serena/get_*",
    "@serena/search_for_pattern"
  ]
}

보안 에이전트는 분석 관점을 보안에 특화시킴. 같은 코드를 봐도 “인증 우회 가능성”, “하드코딩된 시크릿” 같은 관점에서만 리포트함.

analyst-design.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "name": "analyst-design",
  "description": "설계 리뷰 전용 (읽기 전용, 수정 불가)",
  "prompt": "너는 설계 리뷰 전문 에이전트다. 코드와 아키텍처를 읽고 설계 이슈만 리포트하라. 절대 코드를 수정하지 마라.\n\n분석 관점: 데이터 정합성, 스키마 설계, API 계약, 상태 관리, 확장성, 기존 코드와의 일관성",
  "allowedTools": [
    "read",
    "@context7",
    "@sequential-thinking",
    "@serena/find_*",
    "@serena/read_*",
    "@serena/list_*",
    "@serena/get_*",
    "@serena/search_for_pattern"
  ]
}

설계 에이전트에는 @context7(문서 검색)을 추가로 허용. 라이브러리 공식 문서와 비교하며 설계 적합성을 판단할 수 있게 함.


사용 방법

1
2
3
4
5
6
7
8
9
10
11
# 코드 분석 요청
kiro chat --agent analyst-code
> handler.js의 에러 핸들링 누락 지점 분석해줘

# 보안 검증
kiro chat --agent analyst-security
> auth.js와 관련 미들웨어의 인증 우회 가능성 점검해줘

# 설계 리뷰
kiro chat --agent analyst-design
> 현재 DynamoDB 스키마가 조직개편 시나리오를 커버하는지 검토해줘

메인 에이전트와의 역할 분리

에이전트역할쓰기 권한용도
ebt-dashboard개발코드 작성, 수정, 배포 준비
analyst-code분석버그/로직 오류 탐지
analyst-design설계아키텍처/스키마 적합성
analyst-security보안취약점 탐지

개발할 때는 메인 에이전트, 리뷰할 때는 분석 에이전트. 이렇게 분리하면 “리뷰해달라고 했는데 코드를 바꿔버렸다” 사고가 구조적으로 불가능해짐.


정리

  • allowedTools로 도구 접근을 제한하면 에이전트의 행동 범위를 물리적으로 통제할 수 있음
  • 분석 관점을 프롬프트로 특화시키면 같은 코드에서도 다른 인사이트를 얻을 수 있음
  • “수정 권한이 없는 리뷰어”라는 개념은 사람 조직에서도 당연한 건데, AI에게도 동일하게 적용하면 됨
This post is licensed under CC BY 4.0 by the author.