같은 이슈를 겪었던 타 블로거 분의 글(https://jun-your-house.tistory.com/13)에 나온 해결방법을 적용해봤지만 저에게는 효과가 없어서 codex aigent와 대화를 하며 해결한 기록입니다.
저는 코덱스앱과 CLI PATH경로가 꼬인 케이스였습니다. 해결 방법을 빠르게 보실 분은 "4 내가 바꾼 곳은 사용자 변수였다" 글을 보시고 따라하시면 됩니다.
환경 변수 이름만 바꾸고 정상 실행되기까지
윈도우에서 Codex를 열 때마다 “조직 설정을 불러오지 못했습니다”라는 오류가 나왔다. 다시 시도를 눌러도 같았고, 로그아웃 버튼도 제대로 작동하지 않았다.
핫스팟으로 인터넷을 바꾸고, 재부팅하고, 앱을 다시 설치해도 해결되지 않았다. 그런데 내 PC에서는 사용자 환경 변수 CODEX_CLI_PATH의 이름을 CODEX_CLI_PATH_BACKUP으로 바꾼 뒤 재부팅하자 앱이 정상 실행됐다. 파일 경로가 적힌 값은 그대로 뒀다.
이 글은 내가 겪은 문제와 해결 과정을 쉽게 풀어 쓴 기록이다. 같은 오류의 만능 해결법은 아니다. 실제로 확인한 결과와 아직 추정인 부분을 나눠 설명하겠다.
1 재설치해도 같은 화면이었다
당시 Windows의 설치된 앱 목록에서 확인한 버전은 26.1021.3705.0이었다. 목록에는 ChatGPT로 표시됐고, 내가 문제를 겪은 것은 그 안에서 사용하는 Codex였다.
처음에는 인터넷 연결이나 설치 문제라고 생각했다. 그래서 다음 방법을 차례로 시도했다.
· 휴대전화 핫스팟에 연결하고 Windows를 여러 번 재부팅했다.
· 설치된 앱의 고급 옵션에서 종료와 복구를 시도했다.
· Microsoft Store에서 업데이트를 확인하고 앱을 삭제한 뒤 다시 설치했다.
핫스팟에서도 오류는 같았다. 복구 과정에서는 종료 버튼을 눌렀는데도 “앱이 현재 실행 중이므로 복구할 수 없다”는 안내가 나왔다. 작업 관리자에서 기대한 이름의 앱이 보이지 않을 때도 그랬다.
Store에는 설치됨과 열기가 표시됐고, 별도 업데이트는 보이지 않았다. 재설치한 뒤에도 같은 오류가 돌아왔다. 적어도 내 PC에서는 앱을 다시 설치하는 것만으로 해결되지 않았다.
2 환경 변수라는 설정 메모를 찾았다
환경 변수는 프로그램이 시작할 때 참고할 수 있는 “이름표가 붙은 설정 메모”라고 생각하면 쉽다. 메모의 이름과 내용이 한 쌍으로 저장된다. 프로그램이 해당 이름을 찾으면 그 안의 값을 읽을 수 있다.
내 사용자 환경 변수에는 CODEX_CLI_PATH라는 항목이 있었다. 값에는 별도로 npm으로 설치한 Codex CLI의 실행 파일 경로가 적혀 있었다. CLI는 터미널에 명령어를 입력해서 쓰는 프로그램이고, npm은 그 프로그램을 설치할 때 사용한 도구다.
실제 경로에는 Windows 사용자 이름이 포함돼 있었다. 개인정보를 가리고 중간 폴더를 줄이면 다음과 같은 형태다. 아래 경로를 복사해 새로 입력하는 작업은 하지 않았다.
C:\Users\<사용자>\AppData\Roaming\npm\…\bin\codex.exe
여기서 꼭 구분할 점이 있다. CODEX_CLI_PATH는 Windows의 일반 Path 항목과 다른 변수다. 이름에 PATH가 들어 있어도, Windows 전체의 프로그램 검색 경로를 편집하는 작업은 아니다.
3 지우지 않고 이름만 바꾼 이유
나는 앱 밖에 “실행 파일이 필요하면 이 주소를 사용하세요”라는 메모가 남아 있는 상황을 의심했다. 그 별도 지정이 현재 앱과 맞지 않는다면, 앱만 다시 설치해도 같은 설정을 계속 받을 가능성이 있기 때문이다.
그래서 원래 값을 없애는 대신, 메모의 이름만 바꿔 보기로 했다. CODEX_CLI_PATH를 찾는 프로그램에는 원래 이름이 보이지 않게 하고, 나는 BACKUP이라는 이름 아래 기존 경로를 보관하는 방식이다. 필요하면 되돌리기도 쉽다.
이것은 당시 세운 가설이다. 앱이 실제로 어느 실행 파일을 불렀는지, 내부에서 어떤 통신이 실패했는지까지 추적하지는 않았다. “CLI가 고장 났다”거나 “조직 계정에 문제가 있다”고 확정할 근거는 없다.
4 내가 바꾼 곳은 사용자 변수였다
먼저 CODEX_CLI_PATH가 이미 있는지부터 확인했다. 이 변수가 없다면 내 사례와 조건이 다르다. 따라 하기 위해 새로 만들 필요는 없다. 회사나 개발 도구에서 정해 둔 설정이라면 용도를 먼저 확인해야 한다.
환경 변수 창 열기
Windows 검색에서 “환경 변수”를 검색한 뒤 “시스템 환경 변수 편집”을 열었다. 이어서 “환경 변수” 버튼을 눌렀다. 창 이름에는 시스템이 들어가지만, 내가 수정한 곳은 위쪽의 사용자 변수 목록이었다.
변경 전 이름과 값 보관하기
사용자 변수에서 CODEX_CLI_PATH를 찾고, 원래 이름과 경로 값을 확인했다. 같은 방법을 검토한다면 변경 전 내용을 안전한 곳에 기록해 두는 편이 좋다. 경로에 사용자 이름이 들어갈 수 있으므로 공개 게시판에 그대로 올리지는 않는 것이 좋다.
편집에서 이름만 바꾸기
해당 항목을 선택하고 편집을 눌렀다. 바꾼 것은 변수 이름뿐이다. 변수 값에 있던 파일 경로는 글자 하나 바꾸지 않고 그대로 뒀다.
그림 2 설명용 재현 이미지 · 실제 캡처 아님. 위쪽 사용자 변수에서 이름만 바꾸는 과정이다. 그림의 경로는 예시이며, 실제 변경 시에는 자신의 원래 값을 그대로 유지한다.
CODEX_CLI_PATH_BACKUP이 이미 있다면 기존 항목을 덮어쓰면 안 된다. 먼저 내용을 확인해야 한다. 일반 Path 목록이나 다른 환경 변수는 이번 작업에서 수정하지 않았다.
저장한 뒤 재부팅하기
확인을 눌러 변경 사항을 저장하고 Windows를 재부팅했다. 다시 로그인한 뒤 앱을 실행했다.
환경 변수는 실행 중인 프로그램과 새로 시작한 프로그램이 서로 다른 값을 가지고 있을 수 있다. Windows에서는 새 프로세스가 부모 프로세스의 환경 변수를 물려받는 것이 기본 동작이다. 나는 이전 값을 가진 프로세스의 영향을 줄이기 위해 재부팅까지 했다. 모든 환경 변수 변경에 재부팅이 반드시 필요하다는 뜻은 아니다.
이 과정에서 .codex 폴더, 로그인 정보, 대화 기록은 삭제하지 않았다. 보안 설정을 낮추는 작업도 하지 않았다.
5 처음에는 창이 늦게 나타났다
재부팅 후 앱을 실행했을 때 처음에는 작업 관리자에 관련 프로세스만 보이고, 화면에는 창이 나타나지 않았다. 이전에도 실행이 늦어진 적이 있어 잠시 기다렸다.
이후 창이 나타났고, 이번에는 조직 설정 오류 없이 정상적으로 사용할 수 있었다. 내가 확인한 결과는 “앱이 뜨고 잘 된다”는 것이었다. 창이 늦게 뜬 원인까지 알아낸 것은 아니며, 무조건 오래 기다리면 된다는 뜻도 아니다.
6 터미널의 CLI도 정상 실행됨 확인
환경 변수 이름을 바꿨다고 CLI 프로그램 자체가 삭제된 것은 아니다. 이후 터미널에서 다음 명령을 실행했다.
codex --version
버전 출력은 다음과 같았다.
codex-cli 0.162.1
이 결과로 확인한 것은 터미널이 codex 명령을 찾아 실행하고 버전 정보를 보여 준다는 점이다. 로그인, 모델 연결, 실제 작업 수행까지 모두 검사한 결과는 아니다.
데스크톱 앱과 별도로 설치한 CLI가 함께 있다고 해서 데스크톱 정식판이 두 개 설치됐다고 볼 필요는 없다. 사용하는 방식이 다른 도구가 함께 있는 것이다. 터미널에 나온 버전이 앱 내부 실행 파일의 버전과 같다고 단정할 수도 없다.
7 되돌릴 수 있게 남겨 두었다
내 경우에는 변경 후 앱이 정상 실행됐고 터미널의 버전 명령도 실행됐다. 그래서 당장 원래 변수 이름으로 되돌릴 이유는 없었다. 다만 이 변수를 필요로 하던 다른 도구나 작업이 있다면 영향을 받을 수 있다.
되돌릴 때는 현재 설정을 먼저 확인하고 CODEX_CLI_PATH_BACKUP의 이름을 CODEX_CLI_PATH로 복원하면 된다. 그사이 원래 이름의 변수가 새로 생겼다면 덮어쓰지 말고 두 값을 비교해야 한다. 이후 관련 프로그램을 완전히 다시 실행해 변경이 반영됐는지 확인한다.
같은 오류를 겪는 사람에게
내 PC에서는 재부팅, 핫스팟 연결, 재설치로 해결되지 않던 문제가 CODEX_CLI_PATH의 이름을 바꾸고 재부팅한 뒤 해결됐다. 실행 파일을 별도로 지정한 설정이 영향을 줬을 가능성은 있지만, 정확한 내부 원인은 확인하지 못했다.
같은 오류가 반복된다면 이 변수가 별도로 설정돼 있는지 확인해 볼 수 있다. 실제로 존재하고 용도를 확인했다면, 원래 값을 보관한 뒤 그 지정을 잠시 사용하지 않는 방식으로 결과를 비교해 볼 수 있다. 변수가 없다면 새로 만들거나 설정 폴더부터 지울 필요는 없다.
