Claude Code vs Codex vs Antigravity: 같은 버그 4개 고치기 비교 (2026)
세 도구 중 무엇이 버그를 더 잘 고치는지 보려고, 파일 다섯 개짜리 주문 정산 프로그램에 버그 네 개를 심고 고객 제보처럼 증상만 적은 ISSUE.md를 줬습니다. 어느 파일이 문제인지는 알려 주지 않았어요. Claude Code, Codex CLI, Antigravity CLI에 같은 요청을 세 번씩 맡겼습니다.
결과는 싱겁게도 무승부였습니다. 세 도구가 세 번씩, 아홉 번 모두 버그 네 개를 다 고쳤고, 고친 내용마다 테스트도 붙였어요. 차이는 걸린 시간과 쓴 양에서 났습니다. 평균 시간은 Codex 53초, Claude Code 73초, Antigravity 227초였습니다.
오히려 크게 갈린 건 그 전 단계였습니다. Windows에서 세 도구를 사람 손 없이 돌리기까지, Claude Code는 바로 됐고 Codex와 Antigravity는 각각 한 번씩 크게 막혔어요. 그래서 이 글은 결과와 함께 막힌 곳을 같이 적었습니다.
2026년 10월 23일 Windows 11 테스트 환경에서 Claude Code 2.1.296(Opus 5.5), Codex CLI 0.162.1(gpt-6.1-sol), Antigravity CLI 1.4.5(Gemini 3.8 Flash)로 직접 실행한 결과입니다.
확인한 버전·환경
- Claude Code 2.1.296 · Opus 5.5 · Windows 11 · 확인일 2026-10-23
- Codex CLI 0.162.1 · gpt-6.1-sol · Windows 11 · 확인일 2026-10-23
- Antigravity CLI 1.4.5 · Gemini 3.8 Flash · Windows 11 · 확인일 2026-10-23
한눈에 보면: 결과는 같고 시간과 양이 다르다
이름 옆의 19/19 × 3회부터 보세요. 채점 테스트 19개를 세 도구가 세 번 모두 통과했습니다. 이 과제에서는 “누가 고치느냐”로 도구를 고를 이유가 없었다는 뜻이에요.
시간은 Codex와 Claude Code가 1분 안팎으로 비슷하고, Antigravity는 그 서너 배였습니다. 점이 퍼진 폭도 Antigravity가 가장 넓어서 190초에서 286초까지 갈렸어요.
출력 토큰도 같은 순서로 늘었습니다. 다만 세 도구는 토큰을 세는 방식과 모델이 달라서 이 숫자를 비용으로 바로 옮길 수는 없습니다. 같은 도구 안에서 “얼마나 길게 생각하고 썼나”를 보는 정도로만 읽어 주세요.
과제: 증상만 적힌 제보 네 개
프로그램은 CSV 주문서를 읽어 할인과 부가세를 계산하고 영수증을 출력합니다. src/ 아래 파일 다섯 개에 버그를 하나씩 숨겼고, 원래 있던 테스트 3개는 모두 통과하는 상태로 줬어요.
| 제보 | 실제 원인 | 숨긴 파일 |
|---|---|---|
| 상품명에 쉼표가 있으면 금액이 엉뚱함 | 큰따옴표를 무시하고 쉼표로만 나눔 | csv.js |
| 정확히 10개·50개면 할인이 한 단계 낮음 | >= 대신 > |
discount.js |
| 순액 4,005원의 부가세가 400원 | 반올림 대신 버림 | money.js |
| 영수증이 금액 큰 순이 아닐 때가 있음 | 정렬 비교 함수가 숫자 대신 참·거짓을 돌려줌 | report.js |
요청은 한 문장이었습니다. “ISSUE.md에 적힌 제보 네 가지의 원인을 찾아 고치고, 고친 내용마다 테스트를 하나 이상 더하세요. 다 되면 npm test로 확인하세요.”
채점은 도구에게 보여 주지 않은 테스트 19개로 했습니다. 고치기 전 원본은 이 중 8개만 통과합니다.
세 도구의 숫자
| 도구 | 채점(3회) | 평균 시간 | 출력 토큰 | 더한 테스트 |
|---|---|---|---|---|
| Codex CLI | 19·19·19 | 53초 | 2,191 | 4·5·5개 |
| Claude Code | 19·19·19 | 73초 | 5,678 | 4·5·4개 |
| Antigravity CLI | 19·19·19 | 227초 | 21,143 | 4·4·4개 |
Claude Code만 비용을 결과에 적어 주는데, API 단가로 환산해 한 번에 $0.27~0.35였습니다.
세 도구 모두 버그 위치를 스스로 찾았고, 네 버그를 각각 다른 파일에서 고쳤어요. 고친 방법도 거의 같았습니다. 할인은 >=로, 정렬은 b.net - a.net으로 바꿨고 CSV는 큰따옴표를 읽는 작은 파서를 새로 썼어요. 부가세만 조금 달라서, 대부분 Math.round(amount / 10)으로 고쳤고 Claude Code는 세 번 중 두 번 Math.floor((amount + 5) / 10)로 같은 반올림을 만들었습니다.
Windows에서 사람 손 없이 돌리려면
결과보다 시간이 더 든 건 여기였습니다. 세 도구 모두 파일을 고치고 npm test를 돌려야 하니, 묻지 않고 그 일을 하게 만들어야 해요.
Claude Code: 허용할 도구를 적으면 바로
-p로 실행하면서 파일 수정은 --permission-mode acceptEdits로, 명령은 --allowedTools로 좁혀 열었습니다. 처음부터 막힘 없이 돌았어요.
claude -p "ISSUE.md에 적힌 제보 ... npm test로 확인하세요." --permission-mode acceptEdits --allowedTools Read Edit Write Glob Grep "Bash(npm test*)" "Bash(node *)" --output-format json
Codex CLI: 관리자 권한 샌드박스에서 멈췄다
처음엔 아무 기록도 남기지 않고 25분 동안 멈춰 있었습니다. Windows 샌드박스를 관리자 권한 방식(elevated)으로 쓰는 설정이었는데, 관리자 권한이 필요 없는 방식(unelevated)으로 바꾸자 바로 돌았어요.
codex exec -s workspace-write -c 'approval_policy="never"' -c 'windows.sandbox="unelevated"' --skip-git-repo-check "ISSUE.md에 적힌 제보 ..."
--full-auto를 붙여 보려 했는데 0.162.1의 codex exec는 이 옵션을 모른다며 바로 끝났습니다. 위처럼 샌드박스와 승인 정책을 따로 주면 됩니다.
Antigravity CLI: 막혀도 “성공”으로 끝난다
가장 헷갈린 건 Antigravity였습니다. 허용 규칙 없이 돌리자, 파일 목록을 보려던 PowerShell 명령 하나가 거부되면서 실행이 그대로 끝났어요. 아무것도 고치지 않았는데 결과는 이랬습니다.
"status":"SUCCESS","response":"","denied_actions":[{"action":"command","display_name":"RunCommand"}]
status만 보면 성공이라, 스크립트로 돌린다면 response가 비었는지와 denied_actions를 꼭 같이 봐야 합니다.
규칙은 ~/.gemini/antigravity-cli/settings.json의 permissions.allow에 넣습니다. 실제로 동작하기까지 두 번 더 고쳤어요.
{
"permissions": {
"allow": ["command(regex:(?s).*)", "write_file(C:/work/orders/)"]
}
}
--sandbox를 켜자 작업 폴더 안의 파일 수정도 막혀서write_file규칙이 필요했습니다. 경로를 역슬래시로 적으면 맞지 않았고, 거부 메시지에 찍힌 대로 슬래시(C:/...)로 적어야 통과했습니다.- 명령은
command(regex:.*)로 열어도 한 번 거부가 나왔고, 줄바꿈까지 맞는regex:(?s).*로 바꾸자 사라졌습니다.
명령을 정규식으로 모두 여는 건 샌드박스를 켰을 때만 하세요. 샌드박스 없이 이렇게 열면 에이전트가 어떤 명령이든 실행할 수 있습니다.
저는 이렇게 고릅니다
| 상황 | 도구 |
|---|---|
| 빨리 고치고 결과를 바로 확인할 일 | Codex CLI 또는 Claude Code |
| 이미 쓰는 구독·계정이 있는 쪽 | 그 도구. 이번 과제에서 결과 차이는 없었습니다 |
| Gemini 모델을 쓰고 싶을 때 | Antigravity CLI, 단 denied_actions 검사를 함께 |
이번 과제는 버그 위치를 찾고 고치는 데까지는 세 도구 모두에게 어렵지 않았습니다. 그러니 성능보다 이미 쓰는 계정, 자동화할 때의 편의, 실패가 얼마나 잘 드러나는지로 고르는 게 실용적이에요.
돌려 보고 나서
비교 글을 쓰려고 시작했는데, 막상 결과보다 오래 붙잡고 있던 건 각 도구를 혼자 돌게 만드는 설정이었습니다. 버그를 고치는 실력은 이제 세 도구가 비슷하고, 갈리는 건 “막혔을 때 어떻게 알려 주나”더라고요.
여러 도구를 같이 쓴다면 먼저 각 도구에서 권한이 거부됐을 때 어떤 출력이 나오는지 한 번씩 확인해 두세요. 같은 Claude Code 안에서 모델과 effort만 바꿨을 때의 차이는 Opus·Sonnet·Haiku 5.5를 effort별로 108번 돌려 본 비교에, Antigravity를 스크립트로 돌릴 때 실패를 판정하는 법은 Antigravity CLI 헤드리스 모드에 더 자세히 있습니다.
참고한 공식 자료
2026년 10월 23일에 확인했습니다.
- Run Claude Code programmatically —
-p실행,--allowedTools와 권한 모드,--output-format json - Antigravity permissions —
permissions.allow의action(target)규칙 형식과regex:대상