Skip to content
ssimuPublic

About

Claude Code / Codex 계정 프로필 전환기 — 여러 구독 계정을 로그인 없이 오가고, 남은 한도를 한 화면에

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

26 Commits

Folders and files

Repository files navigation

한국어 · English · 日本語 · 中文

ccp

Claude Code 계정을 여러 개 쓸 때, 로그아웃·로그인 없이 계정을 바꾸는 zsh 도구입니다.

한도가 찬 계정에서 다른 계정으로 옮겨도 대화 기록·설정·스킬은 그대로 이어지고, 어느 계정에 얼마나 남았는지 한 화면에서 확인할 수 있습니다. Codex CLI 계정도 같은 메뉴에 나옵니다.

  Claude
  ── 지금 쓸 수 있음 ──────────────────────────────────
  ▸ 2) team       ← 추천 · 주간 62% 남음 · 리셋 2일 뒤
    0) 기본       주간 85% 남음 · 리셋 5일 뒤
  ── 지금 못 씀 · 세션만 차면 풀린다 ───────────────────
    1) personal   ⏳ 세션 소진 — 2시간12분 뒤 풀림

ccp를 치면 이 화면이 뜨고, Enter만 치면 지금 가장 여유 있는 계정으로 켜집니다.

시작하기

필요한 것: Mac 또는 Linux, zsh(Mac은 기본), python3(Mac에 포함), 그리고 이미 설치된 Claude Code.

터미널에 이 세 줄을 붙여 넣으세요.

git clone https://github.com/ssimu/ccp.git ~/projects/ccp
~/projects/ccp/install.sh
source ~/.zshrc

설치 스크립트가 하는 일은 ~/.zshrc에 한 줄 추가하고 설정 파일을 만드는 것뿐이라 몇 번 돌려도 안전합니다. 로그인 토큰은 어디에도 복사하지 않습니다.

이제 ccp를 칩니다.

ccp
  1. 메뉴가 뜹니다. 처음엔 지금 쓰는 계정("기본") 하나뿐이고, a를 눌러 계정을 추가하라는 안내가 보입니다.
  2. a를 누르고 이름(예: team), 별칭(예: cct, 비워도 됨), 설명을 답합니다. 메뉴로 돌아오면 새 계정이 "미로그인"으로 들어와 있습니다.
  3. 그 줄로 가서 Enter. Claude Code가 그 계정으로 열리니 거기서 /login 합니다.

계정 수만큼 2~3을 반복하면 끝입니다. 이름은 프로필 디렉터리 이름이 되니 영문이 편하고, 별칭은 cct처럼 터미널에서 바로 그 계정을 켜는 짧은 명령입니다. 지금 쓰던 ~/.claude 계정은 따로 추가하지 않습니다. 항상 0번 "기본"입니다.

파일로 관리하고 싶으면 ~/.config/ccp/profiles.tsv에 한 줄에 계정 하나씩(도구·이름·별칭·설명, 탭 구분) 적고 ccp-sync. 메뉴에서 추가한 것도 이 파일에 기록됩니다.

사용법

이렇게 치면 이렇게 됩니다
ccp 메뉴가 뜹니다. 방향키로 고르고 Enter. 그냥 Enter면 추천 계정
ccp team 또는 cct 그 계정으로 바로. 이 폴더에서 나눈 대화 목록이 먼저 뜹니다 — ↓로 골라 Enter 하면 그 대화를 가져와 이어서, 0번(기본)은 새 대화
ccp team --take 묻지 않고 가장 최근 대화를 가져와 이어서. 한도 차서 옮길 때 이걸 씁니다. --take f7745fb0처럼 ID 앞자리로 특정 대화
ccp team -c / -r <id> Claude Code의 이어가기 옵션을 그대로 전달(목록 없이). 두 계정이 한 기록을 같이 쓰게 되니 보통은 위의 가져오기를 권합니다
ccp-usage 메뉴 없이 남은 한도만 확인
ccp-ls 계정마다 누가 로그인돼 있는지
ccp-new 이름 별칭 계정 하나 더
ccp-edit 이름 새이름 새별칭 이름·별칭 수정. 폴더도 옮기므로 로그인은 유지
ccp-rm 이름 계정 삭제. 그 계정의 로그인만 지워지고 대화 기록은 남음

대화 목록은 계정 메뉴와 같은 조작입니다: ↑↓(또는 j k)로 움직이고, 숫자를 누르면 그 번호로, Enter로 고르고, q나 Esc로 취소합니다. 화면을 지우고 그리므로 계정 메뉴의 한도 표가 남지 않습니다. 대화는 오늘·이번 주·이전으로 묶이고, 브랜치·기록 크기와 함께 다른 계정이 잡고 있는지, 이 계정에서 열려 있는지, 다른 세션으로 이어졌는지가 표시됩니다. 같은 저장소의 워크트리(Orca 등)에서 나눈 대화도 함께 나오고, 다른 계정이 잡고 있는 대화와 다른 세션으로 이어진 대화에는 표시가 붙습니다. 가져오기는 원본을 건드리지 않는 복사본(Claude Code의 --fork-session)이라 원래 계정에서 열어 둔 채여도 기록이 엉키지 않고, 마지막 압축 이후 대화가 그대로 실립니다. 목록을 끄려면 ~/.config/ccp/config.zsh에 CCP_PICK_SESSION=0, 개수는 CCP_PICK_N=12처럼.

메뉴에서는 ↑↓(또는 j k)로 움직이고, 숫자를 누르면 그 번호로 가고, v를 누르면 그래프와 표가 바뀌고, q로 나옵니다. 메뉴 안에서 바로 관리할 수도 있습니다. a는 추가, 고른 줄에서 e는 이름·별칭 수정, d는 삭제입니다. 질문 몇 개에 답하면 메뉴로 돌아옵니다.

Claude Code 하단 상태줄에는 현재 계정과 남은 한도가 항상 표시됩니다.

team:me@example.com │ Opus │ 주 ██░░┃░ 38%  5h █░░░┃░ 12%  Fable ███┃░░ 47% │ ~/proj │ ctx 12% │ git main

막대 안의 ┃는 창에서 지금 위치입니다. 오른쪽 끝에 붙을수록 리셋이 가깝고, 막대가 ┃에 못 미치면 페이스보다 덜 쓴 것입니다(ccp 메뉴와 같은 읽는 법). 70%부터 노랑, 90%부터 빨강으로 바뀝니다. 리셋까지 남은 시간을 글자로도 보고 싶으면 statusline.conf에서 show_reset = yes. 주간·세션은 Claude Code 가 직접 넘겨주는 값입니다. Fable 같은 모델 전용 주간 한도는 Claude Code 가 상태줄에 주지 않아, ccp 가 /usage로 조회한 값을 캐시해 Fable ███┃░░ 47% 처럼 이어서 보입니다. 10분마다 백그라운드로 갱신하고, 낡은 값에는 ~가 붙습니다.

자주 묻는 질문

계정을 바꾸면 지금까지 대화가 날아가나요? 아닙니다. 대화 기록·설정·스킬은 모든 계정이 공유하고 로그인만 다릅니다. 한도가 차면 ccp team으로 다른 계정을 켜고 목록에서 대화를 고르면(또는 ccp team --take) 바로 이어갑니다. 이 도구의 핵심 용도입니다.

한도를 조회할 때 크레딧이나 토큰이 쓰이나요? 아닙니다. 세 경로 모두 모델을 호출하지 않습니다.

  • 상태줄: Claude Code가 상태줄 스크립트에 넘겨주는 rate_limits 값을 읽기만 합니다. 요청 자체가 없습니다.
  • 메뉴의 Claude 계정: claude -p /usage를 부릅니다. /usage는 사용량 API 조회 명령이라 모델에 아무것도 보내지 않습니다. JSON 출력으로 확인하면 모델 턴 0, 비용 0 USD, 입력·출력 토큰 0입니다.
  • 메뉴의 Codex 계정: codex app-server에 계정·한도 읽기 요청만 보냅니다. 메뉴가 뜨기까지 몇 초 걸리는 것은 네트워크 조회 시간이고, 한도에는 반영되지 않습니다.

계정을 늘리거나 줄이거나 이름을 바꾸고 싶어요. 세 가지 방법이 있고 결과는 같습니다.

  • 메뉴 안에서: ccp → a 추가, 줄을 고르고 e 수정, d 삭제.
  • 명령으로: ccp-new 이름 별칭, ccp-edit 이름 새이름 새별칭, ccp-rm 이름.
  • 파일로: ~/.config/ccp/profiles.tsv를 고치고 ccp-sync. 줄을 뺀 계정의 폴더는 ccp-rm이나 rm -rf ~/.claude-profiles/이름으로. 삭제해도 그 계정의 로그인만 지워지고 대화 기록·설정은 남습니다. 0번 "기본"은 지우거나 이름을 바꿀 수 없습니다.

항상 --dangerously-skip-permissions로 켜고 싶습니다. ~/.config/ccp/config.zsh에서 이 줄의 주석을 풉니다. 무엇을 끄는 옵션인지 알고 켜세요.

CCP_CLAUDE_ARGS=(--dangerously-skip-permissions)

Codex도 씁니다. codex 명령이 있으면 메뉴에 자동으로 함께 나옵니다. Codex 계정을 여러 개 두려면 profiles.tsv의 도구 칸을 codex로 적습니다. 예: codex work cxw 회사 워크스페이스

  • 프로필 = 워크스페이스. 개인 워크스페이스 하나, 팀마다 하나씩 만듭니다. 각 프로필에서 CODEX_HOME=~/.codex-profiles/이름 codex login 할 때 브라우저 승인 화면에서 그 워크스페이스를 고르세요. 같은 ChatGPT 계정이라도 워크스페이스마다 한도가 따로입니다.
  • 같은 워크스페이스 판별. Codex는 워크스페이스 이름을 알려주지 않아 메뉴에는 프로필 이름과 요금제(pro/team)만 보입니다. 두 프로필의 이메일·요금제·사용률이 똑같으면 같은 워크스페이스에 로그인된 것이니 한쪽에서 codex login을 다시 해 다른 워크스페이스를 고르세요.
  • Codex 화면 하단에도 모델·5시간·주간 한도·컨텍스트가 보이도록 설치 때 ~/.codex/config.toml의 [tui] status_line을 넣어 줍니다(이미 있으면 그대로). 항목은 Codex 안에서 /statusline으로 바꿉니다. Codex는 외부 스크립트를 붙일 수 없어 ccp 프로필 이름은 거기 못 넣습니다. 어느 계정인지는 ccp 메뉴에서 봅니다.

메뉴가 뜨는 데 몇 초 걸립니다. 계정마다 남은 한도를 조회하는 시간입니다. 계정당 3초 정도이고 병렬로 돌아 전체도 그 정도입니다. 위에서 말한 대로 크레딧은 들지 않습니다.

메뉴 언어를 바꾸고 싶습니다. 메뉴·메시지·상태줄은 한국어, English, 日本語, 中文을 지원합니다. 기본은 터미널 로케일(LANG)을 따르고, ~/.config/ccp/config.zsh에 CCP_LANG=en처럼 적으면 고정됩니다. 한 번만 바꿔 보려면 CCP_LANG=en ccp.

상태줄 모양을 바꾸고 싶습니다. ~/.config/ccp/statusline.conf에서 정합니다. 보일 조각과 순서, 구분자, 막대 폭과 글자, 사용률/남은 비율, 색 기준, 계정 표시 형식을 바꿀 수 있습니다. 고치면서 ccp-statusline으로 바로 미리 봅니다. 몇 가지 예:

segments = account weekly session      # 모델·디렉터리·git 없이 한도만
bar = 0                                # 막대 없이 숫자만
percent = left                         # 남은 비율로
account = "{profile}"                  # 이메일 숨기기
format = "{account} · {weekly} · {session} ▏{dir}"   # 순서 대신 틀을 직접

아예 다른 상태줄을 쓰려면 ~/.config/ccp/statusline.sh를 만들면 그것이 대신 실행됩니다.

원래 쓰던 상태줄이 있습니다. install.sh --no-statusline으로 설치하면 상태줄은 건드리지 않습니다.

새 계정에서 MCP 서버가 안 보입니다. MCP 설정은 계정(.claude.json)마다 따로 있습니다. 그 계정으로 켠 상태에서 claude mcp add --scope user …를 다시 합니다.

워크트리(Orca 등)에서 띄우면 원래 폴더의 대화가 /resume에 안 나옵니다. Claude Code는 기록을 실행 폴더별로 쌓습니다. ccp로 프로필을 골라 띄우면 워크트리에서도 원래 폴더(메인 체크아웃)의 기록 폴더를 함께 씁니다. 이미 따로 쌓인 기록은 ccp-migrate -n으로 미리 보고 ccp-migrate로 합칩니다 — 계정을 바꿔 이어가도 되감기(rewind)가 살도록 file-history도 이때 공유로 바뀝니다. 기본 프로필(claude를 직접 실행)에는 적용되지 않습니다(Claude Code의 제약). 끄려면 config.zsh에 CCP_LINK_WORKTREES=0.

다른 계정이 백그라운드로 넘긴 세션을 이어가고 싶습니다. 그냥 ccp team으로 켜서 목록에서 고르면(또는 ccp team --take <id>) 됩니다. 복사본으로 가져오므로 원래 계정의 데몬이 쥐고 있어도 기록이 엉키지 않습니다. 주의할 점 하나: 백그라운드로 넘어가면서 새로 생긴 세션은 첫 프롬프트를 받기 전까지 제목만 있는 껍데기입니다. Claude Code의 /resume에서 그걸 고르면 이전 대화가 통째로 빠진 채 열립니다. ccp 목록은 껍데기를 빼고 원본에 "…로 이어짐" 표시를 붙이니 원본을 고르세요. 남은 백그라운드 워커는 ccp가 알려 주는 대로 ccp <그 프로필> 후 claude stop <id>로 정리합니다.

문제가 생기면

  • ccp 명령이 없다 → 새 터미널을 열거나 source ~/.zshrc
  • 메뉴에 내 계정이 없다 → ccp-sync를 아직 안 돌렸습니다
  • "미로그인"으로 나온다 → ccp 이름으로 열고 /login
  • 별칭이 안 된다 → cp처럼 기존 명령과 겹치는 이름입니다. 터미널을 열 때 경고가 뜹니다. 다른 이름으로 바꾸세요
  • 그래도 안 되면 → 이슈에 실행한 명령과 출력을 함께 남겨 주세요

더 보기

  • 동작 원리와 건드리면 안 되는 것 — 무엇을 공유하고 무엇을 분리하는지
  • 제거: ~/.zshrc에서 ccp 줄을 지우고 rm -rf ~/projects/ccp ~/.config/ccp ~/.claude-profiles ~/.codex-profiles. ~/.claude는 그대로 남습니다.
  • 테스트: zsh tests/test_ccp_zsh.sh · python3 -m pytest tests

MIT License

About

Claude Code / Codex 계정 프로필 전환기 — 여러 구독 계정을 로그인 없이 오가고, 남은 한도를 한 화면에

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages