“AI가 빌드를 못 한다고요?”
Astro로 사이트를 만들다가 이런 에러를 만났습니다.
Error: spawn EPERM
원인을 찾아보니 AI 도구가 빌드 명령어를 실행하지 못하고 있었습니다.
그런데 이상했습니다. Claude Code 터미널에서는 똑같은 명령어가 멀쩡히 돌아갔습니다.
같은 Claude AI인데 왜 한쪽만 막히는 걸까요?
AI 도구는 전부 같은 게 아닙니다
AI 도구를 쓰다 보면 이런 것들을 접하게 됩니다.
- Claude Code: 터미널에서 실행하는 개발 도우미
- Codex: 코드 작성과 수정에 특화된 AI
- GitHub Copilot: 에디터 안에서 코드를 제안하는 AI
- ChatGPT: 대화형 범용 AI
겉으로 보면 다 비슷해 보입니다.
“AI한테 코드 짜달라고 하는 거잖아요.”
맞습니다. 하지만 실행 환경이 완전히 다릅니다.
핵심 개념: 로컬 vs 샌드박스
로컬 실행
Claude Code 터미널은 보통 이 방식에 가깝습니다.
내 PC -> 내 터미널 -> AI가 명령어 실행
AI가 내 컴퓨터 위에서 직접 명령어를 실행합니다.
내 권한, 내 파일, 내 프로그램을 그대로 씁니다. esbuild.exe를 실행해야 하면 그냥 실행합니다.
샌드박스 실행
Codex나 GitHub Copilot Workspace 같은 서비스는 격리된 실행 환경을 씁니다.
내 PC -> 인터넷 -> Anthropic/OpenAI 클라우드 -> 격리된 가상 환경
AI가 클라우드에 있는 격리된 컨테이너 안에서 동작합니다. 이 컨테이너는 보안을 위해 할 수 있는 일이 제한되어 있습니다.
샌드박스가 막는 것들
샌드박스 환경에서는 보안상 이런 것들이 차단될 수 있습니다.
| 가능한 것 | 막힐 수 있는 것 |
|---|---|
| 파일 읽기와 쓰기 | 외부 바이너리 실행 |
| Node.js 코드 실행 | 자식 프로세스 생성 |
| 텍스트 처리 | 시스템 명령어 직접 호출 |
| 코드 분석과 수정 | 네트워크 외부 접속 |
Astro 빌드가 막힌 이유가 바로 이것입니다.
Astro는 내부적으로 esbuild라는 별도 프로그램을 실행해서 코드를 번들링합니다. 샌드박스가 이 별도 프로그램 실행을 차단하면 spawn EPERM 같은 에러가 납니다.
왜 이렇게 만들었을까
이상하게 느껴질 수 있습니다.
“왜 일부러 막아놓는 거야?”
이유는 보안입니다.
수많은 사용자가 클라우드에서 코드를 실행합니다. 만약 제한이 없다면 이런 문제가 생길 수 있습니다.
- 악의적인 코드가 서버 전체에 영향을 줄 수 있음
- 다른 사용자의 데이터에 접근할 수 있음
- 서버 자원을 무제한으로 사용할 수 있음
그래서 각 사용자에게 격리된 가상 환경을 주고, 그 안에서만 실행되도록 제한합니다.
이건 버그가 아니라 의도된 설계입니다.
실전 가이드: 어떤 AI 도구를 언제 쓸까
정리는 간단합니다.
코드 짜고 수정할 때
Codex나 Copilot이 잘 맞습니다.
파일을 읽고 쓰고, 코드 구조를 분석하고, 수정안을 만드는 작업에 강합니다.
빌드, 실행, 테스트할 때
로컬 터미널 기반 도구가 유리합니다.
내 PC에서 직접 실행하므로 로컬 프로그램, 빌드 도구, 브라우저, 시스템 명령어를 그대로 쓸 수 있습니다.
막히는 에러가 있을 때
먼저 어떤 환경에서 실행했는지 확인해야 합니다.
“AI가 못 한다”가 아니라 “이 환경에서는 못 한다”일 수 있습니다.
정리
AI 도구가 무언가를 못 할 때는 코드 문제인지 환경 문제인지 먼저 구분해야 합니다.
샌드박스 환경은 보안을 위해 일부 기능이 제한됩니다. 이건 코드를 고쳐서 해결할 수 없는 경우가 있습니다.
올바른 도구를 올바른 용도에 쓰면 됩니다.
AI 도구가 “안 된다”고 했을 때, 진짜로 AI가 모르는 건지 아니면 환경이 막는 건지. 이 차이를 아는 것만으로도 불필요한 삽질을 많이 줄일 수 있습니다.
이번 글의 배경
이 글은 실제로 Astro 빌드가 Codex에서 막혔던 경험을 바탕으로 작성했습니다.
문제의 핵심은 Astro가 아니라 실행 환경이었습니다.
그래서 앞으로 비슷한 에러를 만나면 먼저 이렇게 물어보면 됩니다.
이 명령이 코드 때문에 실패한 걸까?
아니면 현재 AI 실행 환경이 막고 있는 걸까?
이 질문 하나가 문제 해결 시간을 크게 줄입니다.