요약:
해결 방법 1: Codex App 기본 셸을 Git Bash에서 PowerShell로 바꾸기
해결 방법 2: 남아 있는 bash.exe 프로세스 전부 정리하기
해결 방법 3: 작업트리는 PowerShell에서 직접 생성하기
Windows에서 Codex App에서 영구 작업트리를 생성하던 중, 갑자기 터미널이 닫히고 쓰레드가 비정상 종료되는 현상을 겪었다.
확인해보니 터미널에는 아래와 같은 오류가 찍혀 있었다.
bash.exe: *** fatal error - console device allocation failure - too many consoles in use, max consoles is 32

처음에는 Codex App 자체 문제처럼 보였지만, 실제로는 Windows + Git Bash + 다중 셸 세션 조합에서 발생하는 콘솔 할당 한도 이슈에 가까웠다.
이 글에서는 이 오류가 왜 발생하는지, 왜 Codex App에서 특히 잘 터지는지, 그리고 실무적으로 어떻게 해결하는지가 핵심이다.
내 환경에서는 Codex App에서 영구 작업트리를 생성하는 순간 아래와 같은 오류가 반복적으로 발생했다.
*** fatal error - console device allocation failure - too many consoles in use, max consoles is 32
증상은 대체로 이랬다.
핵심 원인은 간단하다.
Windows에서 Git Bash는 내부적으로 bash.exe를 통해 콘솔을 할당받아 동작한다.
그런데 이 계열은 동시에 사용할 수 있는 콘솔 수에 한계가 있고, 오류 메시지 그대로 최대 32개 수준에서 실패할 수 있다.
Codex App 같은 툴은 다음과 같은 상황에서 셸을 많이 띄운다.
이때 기본 셸이 Git Bash로 잡혀 있으면 bash.exe 프로세스가 누적되고, 어느 시점에서 콘솔 할당 실패가 발생한다.
정리하면 구조는 이렇다.
bash.exe가 누적된다max consoles is 32 에러 발생일반적인 수동 개발 환경에서는 한 번에 Git Bash 창 몇 개 정도만 띄우고 끝나는 경우가 많다.
반면 Codex App 같은 에이전트형 도구는 사람보다 훨씬 공격적으로 셸 세션을 생성할 수 있다.
예를 들면:
여기에 이전 bash.exe가 제대로 종료되지 않으면 문제가 빨리 누적된다.
즉, 사람이 수동으로 쓰는 Git Bash는 괜찮아 보여도,
자동화된 멀티 세션 실행기 위에 Git Bash를 기본 셸로 올리는 것은 안정성이 떨어진다.
가장 중요한 해결책이다.
Codex App 내부 기본 셸을 Git Bash가 아니라 PowerShell 또는 cmd로 바꾸는 것이 가장 확실하다.
권장 운영 방식은 아래와 같다.
이렇게 분리하면 Codex App이 세션을 여러 개 띄워도 Git Bash 콘솔 한도에 직접 걸릴 가능성이 크게 줄어든다.
실제로 Windows에서 자동화 도구, IDE 내장 터미널, 멀티 세션 툴은 PowerShell 쪽이 훨씬 안정적이다.
bash.exe 프로세스 전부 정리하기이미 한 번 꼬인 상태라면 셸을 바꾸는 것만으로는 부족하다.
누적된 bash.exe가 남아 있으면 다시 같은 문제가 발생할 수 있다.
PowerShell에서 아래 명령으로 정리하면 된다.
taskkill /F /IM bash.exe
taskkill /F /IM sh.exe
taskkill /F /IM mintty.exe
taskkill /F /IM git-bash.exe
필요하면 아래도 같이 확인한다.
Get-Process bash,sh,mintty,git-bash,conhost,node -ErrorAction SilentlyContinue
상황이 심하게 꼬였으면 재부팅이 가장 빠르다.
Codex App 내부에서 영구 작업트리 생성 기능을 바로 쓰는 대신,
먼저 PowerShell에서 수동으로 worktree를 만든 뒤 Codex App에서 해당 폴더를 여는 방식도 안정적이다.
예시:
git worktree list
git worktree add ..\wt-feature feature/my-feature
브랜치를 새로 만들면서 작업트리를 붙이고 싶다면:
git worktree add -b feature/my-feature ..\wt-feature HEAD
이 방식의 장점은 명확하다.
즉, 자동 생성 기능이 불안정할 때는 worktree 생성과 에이전트 작업 공간 진입을 분리하는 것이 실무적으로 안전하다.
이 문제는 보통 “한 번에 너무 많이 열었을 때” 터진다.
영구 작업트리, 터미널 탭, 백그라운드 작업 수를 줄이면 재발 가능성이 낮아진다.
실무적으로는 다음 정도가 무난하다.
특히 에이전트형 앱은 내부적으로 사용자가 인지하지 못한 셸도 띄울 수 있어서,
눈에 보이는 탭 수보다 실제 프로세스 수가 더 많을 수 있다.
이번 이슈 이후 Windows에서 Codex App을 쓸 때 운영 원칙을 이렇게 가져가는 게 맞다고 판단했다.
Git Bash를 기본 셸로 쓰지 않는다.
정말 필요한 경우만 별도 창에서 실행한다.
자동화 기능이 불안정하면 PowerShell에서 git worktree add로 먼저 만든다.
안 쓰는 터미널, 죽지 않은 bash.exe, 백그라운드 세션을 주기적으로 정리한다.
앱 내부 상태가 꼬였을 가능성이 높아서 완전 종료 후 재실행이 낫다.
이번 문제는 단순한 터미널 오류처럼 보이지만, 실제로는 더 중요한 포인트를 보여준다.
에이전트형 개발 툴을 쓸 때는
“내가 평소 CLI에서 잘 쓰던 셸”이 자동화 환경에서도 안정적일 것이라고 가정하면 안 된다.
특히 Windows에서는:
즉, 개발 생산성을 높이려면 툴 자체만 볼 게 아니라
셸, 프로세스, 작업트리, 병렬 세션 구조까지 운영 관점에서 봐야 한다.
Codex App에서 영구 작업트리 생성 시 아래 오류가 난다면:
bash.exe: *** fatal error - console device allocation failure - too many consoles in use, max consoles is 32
핵심 해결책은 이것이다.
한 줄로 요약하면:
Windows에서 에이전트형 개발 도구를 안정적으로 쓰려면, Git Bash를 내부 기본 셸로 두지 않는 편이 낫다.

