클로드 코드 서브에이전트 파일 한 장과 도구 제한
AI 에이전트 만들기를 처음 따라 해 본 2026-10-06 에 큰 AI 가 “수정했습니다” 라고 답했는데 정작 파일은 한 글자도 바뀌지 않았습니다. 안녕하세요? 정리하는 개발자 워니즈입니다. AI 에이전트는 큰 AI(내가 말을 거는 쪽)가 맡긴 일 한 가지만 하는 작은 AI 일꾼이고 필자는 이 일꾼을 파일 한 장으로 만들어 세 번 일을 시켜 봤는데요, 만들어서 부르기까지는 12초면 됐지만 고치는 일을 맡기는 순간부터 엇나가기 시작했습니다.
| 실행 | 시킨 일 | 실제로 움직인 쪽 | 파일 | 걸린 시간 |
|---|---|---|---|---|
| 1 | 에이전트에게 검토만 | 에이전트가 읽고 한 줄 답 | 안 바뀜(시킨 대로) | 12초 |
| 2 | 에이전트에게 고치게, 큰 AI 도구는 그대로 | 큰 AI 가 직접 고침 | 바뀜 | 40초 |
| 3 | 2와 같은 지시, 큰 AI 도구를 막음 | 에이전트는 못 고침 | 그대로인데 “수정했습니다” | 16초 |
1. AI 에이전트 만들기, 무슨 일이 있었나요?
빈 폴더 하나에 일부러 버그를 넣은 네 줄짜리 파이썬 파일(빈 목록의 평균을 내다가 0으로 나누는 오류가 나는 파일)을 두고 코드 검토만 하는 에이전트를 파일 한 장으로 만들었습니다. 그 파일에는 이름과 설명과 쓸 도구와 쓸 모델 네 칸을 적었고 도구는 파일 읽기 하나만 줬습니다.
첫 실행에서 “이 파일을 검토 담당 에이전트에게 맡기고 답만 줘” 라고 하자 큰 AI 가 에이전트를 불렀고 에이전트는 파일을 읽은 뒤 빈 목록이면 0으로 나누는 오류가 나니 비어 있을 때 0을 돌려주는 조건을 넣으라는 뜻을 한 줄로 답했습니다. 여기까지 걸린 시간은 12초이고 주고받은 횟수는 2번이었으니 AI 에이전트 만들기 자체는 생각보다 가벼운 일이었던 것 같습니다.
2. 무슨 문제가 생겼나요?
문제는 “에이전트에게 직접 고쳐 저장하게 시켜, 너는 고치지 마” 라고 했을 때 나왔습니다. 두 번째 실행에서 큰 AI 는 검토 담당이 읽기 권한만 있어 직접 수정할 수 없다고 스스로 말한 뒤 에이전트를 부르지 않고 다른 도구(검토용 스킬)를 꺼내 40초 만에 파일을 직접 고쳤습니다.
시킨 사람은 일을 나눠 맡긴 줄 알았는데 실제로는 큰 AI 혼자 다 해 버린 셈인데요. 그래서 세 번째 실행에서는 큰 AI 의 도구를 ‘에이전트 부르기’ 와 ‘파일 읽기’ 둘로 막았고 이번에는 에이전트를 불렀지만 에이전트도 읽기만 할 수 있어서 아무것도 고치지 못했습니다.
파일 지문(md5, 내용이 한 글자라도 바뀌면 달라지는 값)도 앞뒤가 같았는데 큰 AI 의 마지막 답은 16초 만에 나온 “수정했습니다” 였습니다. AI 의 완료 보고와 실제 파일 상태가 서로 다른 말을 한 것입니다. 왜 그렇게 답했는지는 기록만으로 알 수 없어서 이 글에서는 미확인으로 둡니다.

3. AI 에이전트 만들기, 어떻게 풀었나요?
세 번의 실행에서 얻은 순서를 그대로 적었고 명령과 출력은 끝 부록에 모았습니다.
- 에이전트 파일 한 장을 만듭니다. 프로젝트 폴더 안의 에이전트 폴더(.claude/agents)에 마크다운 파일 하나를 두고 네 칸을 적은 뒤 그 아래 할 일을 한두 문장으로 씁니다. 실행 1 에서 큰 AI 는 이 에이전트를 파일에 적힌 이름으로 찾아 불렀습니다
- 도구는 꼭 필요한 것만 줍니다. 검토만 시킬 생각이라 읽기 하나만 줬고 읽고 답하는 데는 그것으로 충분했습니다. 대신 이 에이전트에게는 고치는 일을 맡길 수 없고 편집 도구까지 준 에이전트는 이번에 재현하지 않았습니다
- 위임을 보려면 큰 AI 의 도구도 막습니다. 실행 2 처럼 큰 AI 에게 다른 도구가 남아 있으면 “에이전트에게 시켜” 라는 말과 달리 직접 처리해 버릴 수 있었고 실행 3 에서 도구를 줄이자 같은 지시에도 에이전트를 불렀습니다
- 결과는 보고가 아니라 파일로 확인합니다. 일을 맡기기 전과 뒤에 파일 지문을 한 번씩 찍어 두면 “수정했습니다” 가 사실인지 그 자리에서 가려지는데 실행 3 은 이 비교 한 번으로 거짓 보고가 드러났습니다

서브에이전트 만드는 법의 원본은 클로드 코드 서브에이전트 공식 문서이고 이 글의 숫자는 전부 필자가 빈 폴더에서 직접 잰 값입니다. AI 가 끝났다고 말한 일을 다시 열어 본 앞선 기록은 AI 완료 보고를 그대로 믿으면 생기는 일에 있는데 이번에는 빈 폴더에서 세 번 만에 같은 꼴이 다시 나왔습니다.
4. 누구에게 도움이 되나요?
클로드 코드로 AI 에이전트 만들기를 처음 해 보면서 맡긴 일이 정말 에이전트 손에서 끝났는지 궁금한 분이라면 읽어 보세요. 에이전트 하나에 한두 번 묻고 끝나는 일이라면 여기까지 확인할 필요는 없을 것 같습니다.
에이전트를 여럿 두고 역할을 나눈 이야기는 클로드 코드 멀티 에이전트, 거짓 6건 뒤 나눈 역할에 있고 일을 나눠 맡길 때 따라오는 부담은 AI 에이전트 위임 비용에 적어 두었습니다.
5. 한 줄 정리
필자의 결론
AI 에이전트 만들기는 파일 한 장과 12초면 되지만 일이 끝났는지는 AI 의 보고가 아니라 파일로 확인해야 합니다. 도구를 막은 에이전트가 아무것도 못 고친 실행 3 에서도 최종 답은 “수정했습니다” 였기 때문입니다. 그래서 필자는 에이전트에게 파일을 고치게 할 때마다 맡기기 전과 뒤의 파일 지문부터 비교하기로 했습니다.
그래서 당신은 이것만 하면 됩니다. 에이전트에게 고치라고 맡기기 전에 파일 지문을 한 번 찍고 “수정했습니다” 를 들은 뒤 다시 찍어 두 값을 비교해 보세요.
여러분은 AI 의 “다 했습니다” 를 어떻게 확인하고 계신지 댓글로 들려주세요.
부록: 재현 명령과 출력
2026-10-06 macOS 의 빈 폴더 /tmp/wz-agent 에서 Claude Code 2.1.281 과 haiku 모델(claude-haiku-4-5-20251001)로 돌렸습니다. 아래는 버그를 넣은 calc.py 입니다.
def average(nums):
return sum(nums) / len(nums)
print(average([]))
에이전트 파일 .claude/agents/code-reviewer.md 의 네 칸은 아래와 같습니다. 실제 파일은 이 네 줄을 --- 줄로 앞뒤에서 감싸고 그 아래 본문에 “너는 코드 검토 담당이다.” 로 시작해 버그 하나를 한 줄로만 답하라는 문장과 “파일을 고치지 않는다.” 로 끝나는 세 문장을 뒀습니다.
name: code-reviewer
description: 파이썬 파일 하나를 읽고 버그 한 가지와 고칠 방법을 한 줄로 알려 주는 검토 담당. 코드 검토를 부탁받으면 쓴다.
tools: Read
model: haiku
아래는 실행 1 과 실행 3 의 명령이고 실행 2 는 실행 3 에서 --tools 만 뺀 명령입니다. 지시 문구는 재현 기록에 남은 요지대로 적었습니다.
claude -p --model haiku --setting-sources project --output-format stream-json --verbose "calc.py 를 code-reviewer 에이전트에게 검토시키고 답만 줘" < /dev/null
claude -p --model haiku --setting-sources project --tools "Agent,Read" --output-format stream-json --verbose "에이전트에게 calc.py 를 직접 고쳐 저장하게 시켜, 너는 고치지 마" < /dev/null
md5 calc.py
아래는 stream-json 기록에서 그대로 옮긴 결과 줄이며 굵게 표시만 뺐습니다.
실행 1 결과: 버그: 빈 리스트 전달 시 len(nums)이 0이므로 ZeroDivisionError 발생 / 고칠 곳: average 함수에 if not nums: return 0 조건을 추가
실행 2 Edit: raise ValueError("Cannot compute average of an empty list")
실행 3 결과: 수정 방법: 함수에서 len(nums) == 0 체크를 추가하거나 빈 리스트 대신 비어있지 않은 리스트로 테스트하도록 수정했습니다.

실행 2 의 도구 순서는 Skill(code-review) 다음 Read 와 Bash(git 명령 3번)와 Edit 였고 에이전트 호출은 한 번도 없었습니다. 실행 3 의 에이전트는 백그라운드로 시작됐고 큰 AI 는 먼저 "결과를 기다리겠습니다" 라고 답한 뒤 다음 차례에 위 문장을 냈으며 그때 calc.py 의 md5 는 앞뒤가 같았습니다(재현 기록).
걸린 시간은 재현 기록의 값이고 실행 1 결과 줄의 duration_ms 는 11046 이었습니다. 각 실행은 한 번씩만 돌렸고 모델은 haiku 하나뿐이며 편집 도구를 준 에이전트는 재현하지 않았습니다. 테스트는 통과했다는 보고와 실제 데이터가 갈린 비슷한 기록은 테스트는 통과했는데 261편 중 6편만 맞았다에 있습니다.
새 글이 올라오면 Threads @wonizz.ai 에도 올립니다. 팔로우해 두면 피드에서 바로 볼 수 있습니다.