초대하고 적립

초대 보상 안내

초대 링크를 공유하세요. 친구가 링크로 가입하고 충전하면 이후 충전마다 표시된 보상을 받을 수 있습니다.

Codex CLI에서 두 개 계정 사용하기: 업무용과 개인용 로그인 분리 방법

Codex CLI의 --profile 플래그가 계정을 전환하지 않는 이유와 세션 저장 구조를 살펴보고, 업무용 및 개인용 작업을 위한 독립적인 CODEX_HOME 디렉터리 설정과 안전한 인증 검증 방법을 설명합니다.

목차
Codex CLI에서 두 개 계정 사용하기: 업무용과 개인용 로그인 분리 방법

개인 프로젝트와 업무 작업을 위해 Codex CLI를 함께 사용할 때 환경과 계정을 안정적으로 분리해야 하는 요구가 발생합니다. --profile 플래그는 계정 전환을 위해 설계된 것이 아닙니다. 기본 구성 문서에 따르면, 프로필은 메인 구성 위에 $CODEX_HOME/<name>.config.toml 파일을 덮어씌워 모델 선택, 샌드박스 수준, MCP 서버 등의 설정만 조정할 뿐, 활성 인증 자격 증명을 변경하지 않습니다.

서로 다른 계정을 사용하려면 CODEX_HOME 환경 변수를 통해 독립된 디렉터리를 정의하고 각 디렉터리별로 로그인 절차(codex login)를 개별적으로 완료해야 합니다.

세션 파일 수동 복사의 위험성

Habr의 한 글에서는 사용자의 자동화 사례를 소개합니다. 작성자는 bash 스크립트로 인증 파일을 교체하여 계정을 전환하고 문서화되지 않은 웹 인터페이스 엔드포인트를 통해 잔여 할당량을 조회했습니다. 작성자는 언제든 변경될 수 있는 내부 프라이빗 백엔드 API에 의존한다는 점을 이 방식의 가장 큰 단점으로 명확히 지적했습니다.

세션 파일을 직접 조작하면 토큰의 수명 주기가 깨질 위험이 있습니다. 한 위치에서 리프레시 토큰이 갱신(rotate)되면 다른 디렉터리에 복사해 둔 복제본이 무효화될 수 있습니다. 파일 복사 후 발생한 유사한 인증 오류 사례는 issue #15410에 기록되어 있습니다. 단일 보고서가 복사된 모든 세션 파일이 반드시 실패한다고 증명하는 것은 아니지만, 파일을 수동으로 복사하는 행위는 불필요한 운영 리스크를 유발합니다. auth.json 파일을 직접 읽거나 복사하지 말고, 비공개 백엔드 API도 호출하지 마십시오. 표준적인 해결책은 CLI가 서로 다른 디렉터리에서 세션을 독립적으로 관리하도록 두는 것입니다.

자격 증명 저장소 및 정책 제약

별도의 디렉터리를 구성하기 전에 인증 데이터가 어디에 어떻게 저장되는지 이해하는 것이 중요합니다. 인증 문서에 따르면 cli_auth_credentials_store 구성 매개변수는 다음 모드를 지원합니다.

  • file — 자격 증명이 CODEX_HOME 디렉터리 내부의 로컬 auth.json 파일에 저장됩니다.
  • keyring — 자격 증명이 시스템 키링(macOS의 Keychain, Linux의 Secret Service)에 저장됩니다.
  • auto — CLI가 시스템 키링 사용을 시도하고, 키링을 사용할 수 없으면 파일 저장소로 대체(fallback)합니다.
  • ephemeral — 세션이 현재 실행 중인 프로세스의 메모리에만 유지됩니다.

환경 분리를 계획할 때는 다음과 같은 주의사항과 제약을 염두에 두어야 합니다.

  • 기기에 중앙 집중식 조직 정책(Managed configuration / requirements.toml)이 적용되어 있다면 독립된 CODEX_HOME 디렉터리만으로 완전한 격리를 보장할 수 없습니다. 관리자가 특정 인증 방식이나 저장소 유형을 강제한 경우 해당 정책이 로컬 구성보다 우선합니다.
  • CLI 소스 코드에서 키링 서비스는 CODEX_HOME 경로의 해시값을 기반으로 디렉터리를 구분합니다(참조: storage.rs). 따라서 서로 다른 디렉터리가 자동으로 단일 키링 항목을 공유한다고 단정하는 것은 부정확합니다. 그러나 이것이 모든 환경에서의 완전한 격리를 보장하는 것은 아닙니다. 실제 저장소 동작은 플랫폼과 운영체제 설정에 따라 달라지므로 대상 머신에서 직접 검증해야 합니다.
  • 활성 저장소 모드가 확인되기 전까지는 토큰이 디렉터리 내부에만 존재한다고 미리 가정해서는 안 됩니다.

두 환경의 단계별 설정

명시적인 두 디렉터리인 $HOME/.codex-personal$HOME/.codex-work를 구성합니다. 기존의 ~/.codex 디렉터리는 수정되거나 삭제되지 않고 그대로 유지됩니다.

1단계. 디렉터리 준비

현재 사용자 계정으로만 접근 권한을 제한한 전용 디렉터리를 생성합니다:

mkdir -p "$HOME/.codex-personal" "$HOME/.codex-work"
chmod 700 "$HOME/.codex-personal" "$HOME/.codex-work"

조직 정책에서 파일 기반 저장소를 허용하는 경우, 로그인하기 전에 각 디렉터리의 config.tomlcli_auth_credentials_store = "file"을 명시적으로 설정할 수 있습니다:

cat << 'EOF' > "$HOME/.codex-personal/config.toml"
cli_auth_credentials_store = "file"
EOF

cat << 'EOF' > "$HOME/.codex-work/config.toml"
cli_auth_credentials_store = "file"
EOF

기기에 필수적인 기업 인증 요구사항이 적용되어 있다면 관리자가 승인한 자격 증명 저장소 모드를 사용하십시오.

2단계. 독립적인 인증 진행

브라우저 기반 인증은 chatgpt.com 웹 인터페이스에서 현재 활성화된 세션과 연결됩니다. 브라우저의 프로필 메뉴는 현재 브라우저 세션만 보여줄 뿐, 특정 CODEX_HOME에 어떤 자격 증명이 저장되었는지는 입증하지 못합니다. 매번 브라우저 로그인을 진행할 때 대상 계정과 Workspace를 반드시 확인해야 합니다:

  • 개인 환경에 로그인하기 전에는 브라우저에서 개인 계정으로 전환하십시오.
  • 업무 환경에 로그인하기 전에는 브라우저에서 해당 기업 계정 또는 Workspace를 선택하십시오.

각 환경별로 로그인 절차를 개별적으로 실행합니다:

env CODEX_HOME="$HOME/.codex-personal" codex login

env CODEX_HOME="$HOME/.codex-work" codex login

각각의 경우 열리는 브라우저 창에서 인증 요청을 확인합니다. 의심스러운 점이 있다면 표준 명령인 env CODEX_HOME="..." codex logout을 실행하고, 브라우저에서 활성 계정을 다시 확인한 뒤 해당 디렉터리에 대해 로그인을 다시 진행하십시오(토큰 파일을 확인하거나 수동으로 복사해서는 안 됩니다).

3단계. 로그인 상태 확인

두 디렉터리의 인증 상태를 확인합니다:

env CODEX_HOME="$HOME/.codex-personal" codex login status
env CODEX_HOME="$HOME/.codex-work" codex login status

codex login status 명령은 인증 방법만 표시할 뿐, 특정 사용자 계정의 신원을 확인해 주지는 않습니다. 결제 출처의 차이점에 유의하십시오. ChatGPT 로그인은 연결된 플랜 및 Workspace의 구독 또는 포함된 한도를 사용하지만, API 키 로그인은 OpenAI Platform을 통해 별도로 청구됩니다.

이 가이드에서는 두 개의 서로 다른 계정에 대한 ChatGPT 로그인을 전제로 합니다. status에 API 키가 표시된다면 목표한 시나리오가 충족되지 않은 것이므로 해당 디렉터리의 로그인 단계를 다시 확인하십시오.

4단계. 테스트 작업 실행

업무 환경을 검증하기 위해 테스트용 업무 리포지토리에서 read-only 샌드박스로 권한을 제한한 상태에서 실제 작업을 실행해 봅니다:

cd /path/to/work-project
env CODEX_HOME="$HOME/.codex-work" codex exec --sandbox read-only "README.md를 읽고 프로젝트의 목적을 설명해 줘. 파일은 수정하지 마"

간단한 읽기 전용(read-only) 테스트를 통해 세션과 샌드박스가 정상 작동하는지 확인합니다. 테스트 실행 후 해당 계정이나 Workspace의 사용량(Usage) 섹션을 확인하는 것은 지연이 발생할 수 있는 간접적인 신호일 뿐이며 신원에 대한 확실한 증명이 되지 않습니다. 여전히 불확실하다면 env CODEX_HOME="$HOME/.codex-work" codex logout을 실행하고 브라우저의 활성 계정을 면밀히 확인하면서 로그인 절차를 다시 수행하십시오.

일상적인 사용법

일상적인 개발 작업에서는 명령 앞에 CODEX_HOME을 직접 붙여 호출하거나 셸 구성 파일(~/.zshrc 또는 ~/.bashrc)에 헬퍼 함수를 정의하여 사용할 수 있습니다:

codex-personal() {
  env CODEX_HOME="$HOME/.codex-personal" codex "$@"
}

codex-work() {
  env CODEX_HOME="$HOME/.codex-work" codex "$@"
}

"$@"를 통해 인수를 전달하는 호출 예시:

codex-work login status

cd /path/to/work-project
codex-work exec --sandbox read-only "README.md를 읽고 프로젝트의 목적을 설명해 줘. 파일은 수정하지 마"

codex-personal

LLM 워크플로를 최적화할 준비가 되셨나요?

하나의 API로 모델을 연결하고 키와 AI 비용을 관리하세요.

무료로 시작하기