# 클로드, 코덱스 매번 토큰 확인하기 귀찮아서 만든 메뉴바

Claude Code와 Codex를 자주 쓰다 보니 은근히 귀찮은 일이 하나 생겼습니다. 바로 사용량 확인입니다.

Claude는 Claude대로, Codex는 Codex대로 확인해야 하고, 작업하다가 "지금 얼마나 남았지?" 싶을 때마다 각각의 화면을 열어보는 게 생각보다 번거로웠습니다.

특히 저는 맥 노치 주변 공간을 꽤 잘 쓰는 편입니다. 메뉴바에 작은 정보들이 떠 있는 걸 좋아하고, 자주 보는 숫자는 굳이 어딘가 들어가서 확인하고 싶지 않습니다.

> 아 노치 옆에 바로 사용량이 보이면 좋겠다!

---

## 원했던 것은 단순했습니다

대단한 대시보드가 필요했던 건 아니었습니다.

그냥 지금 Claude를 얼마나 썼는지, Codex는 얼마나 남았는지, 언제쯤 리셋되는지만 빠르게 보고 싶었습니다.

메뉴바에는 짧게 보이고,

```text
👻22%
```

클릭하면 조금 더 자세히 보이는 정도면 충분했습니다.

```text
Claude
Current: 36%
Weekly: 25%

Codex
5 Hour: 12%
Weekly: 35%
```

처음에는 숫자만 있어도 될 줄 알았습니다. 그런데 막상 써보니 숫자보다 "지금 여유가 있는지, 슬슬 아껴야 하는지"가 한눈에 보이는 게 더 중요했습니다.

그래서 사용률에 따라 색이 바뀌는 작은 바를 붙였습니다.

초록이면 아직 여유 있고, 노랑이면 슬슬 보고, 빨강이면 이제 아껴 써야 하는 식입니다.

---

## SwiftBar 위에 올린 작은 플러그인

Token Ghost는 독립 앱은 아니고, **SwiftBar 플러그인**으로 만들었습니다.

SwiftBar는 macOS 메뉴바에 텍스트 기반 플러그인을 띄워주는 앱입니다. Token Ghost는 그 위에서 Claude와 Codex의 사용량을 읽어서 메뉴에 보여줍니다.

[SwiftBar](https://swiftbar.app/)

구조는 이렇습니다.

> SwiftBar = 메뉴바에 표시해주는 앱

ㄴ Token Ghost(지금 만드는 것) = Claude/Codex 사용량을 읽어 출력하는 플러그인

   ㄴ Claude / Codex CLI = 실제 사용량 정보를 갖고 있는 도구

Token Ghost가 계정에 대신 로그인하거나 토큰을 가져오는 건 아닙니다. 이미 내 Mac에 설치되어 있고 로그인된 Claude Code, Codex CLI에서 사용량 정보만 읽습니다.

그래서 이 도구를 쓰려면 먼저 터미널에서 Claude Code와 Codex가 정상적으로 동작해야 합니다.

---

## Claude와 Codex는 읽는 방식이 달랐습니다

만들면서 제일 헷갈렸던 부분은 이거였습니다.

"둘 다 AI 코딩 도구니까 사용량도 비슷한 방식으로 읽으면 되지 않을까?"

막상 해보니 아니었습니다. Claude Code와 Codex는 사용량 정보를 남기는 방식이 달랐습니다.

### Claude Code는 `/usage` 화면을 읽어야 했습니다

Claude Code는 로컬에 "현재 사용량은 몇 퍼센트이고, 리셋은 몇 시다" 같은 구조화된 파일을 따로 남기지 않습니다.

그러니까 Token Ghost 입장에서는 조용히 열어볼 수 있는 사용량 파일이 없습니다. 결국 Claude Code가 직접 보여주는 `/usage` 화면을 짧게 열어서 현재 사용량을 가져와야 했습니다.

다만 이걸 너무 자주 하면 좋지 않습니다. 메뉴바 플러그인은 몇 분마다 계속 새로고침되는데, 그때마다 Claude 화면을 열고 사용량을 읽으면 불필요하게 무겁고 불안정해질 수 있습니다.

그래서 Claude 쪽은 기본값을 이렇게 잡았습니다.

```text
15분에 한 번만 새로 읽기
그 사이에는 캐시된 값 보여주기
강제로 새로 보고 싶으면 Refresh 누르기
```

즉 메뉴에 보이는 Claude 값은 매초 갱신되는 완전한 실시간 숫자는 아닙니다. 대신 값이 얼마나 오래됐는지 함께 보여주고, 필요할 때만 직접 새로 읽도록 했습니다.

저에게는 이 방식이 더 현실적이었습니다. 메뉴바 도구는 계속 켜져 있어야 하니까, 정확도만큼이나 "조용히 잘 붙어 있는 것"도 중요했습니다.

### Codex는 로컬 세션 로그를 읽을 수 있었습니다

Codex는 달랐습니다.

Codex는 로컬 세션 로그 안에 `rate_limits`라는 이벤트를 남깁니다. 그 안에 사용량과 리셋 시간이 구조화된 형태로 들어 있습니다.

대략 이런 위치의 파일들입니다.

```text
~/.codex/sessions/**/*.jsonl
```

그래서 Codex는 터미널 화면을 억지로 띄우고 `/status` 같은 화면을 캡처할 필요가 없었습니다. 대신 로컬 세션 로그에서 가장 최신 `rate_limits` 이벤트를 찾아 읽으면 됐습니다.

이 방식이 더 안정적이었습니다. 화면을 읽는 방식은 터미널 크기, 언어 설정, 공백, UI 변경에 영향을 받습니다. 반면 로그는 기계가 읽기 좋은 구조로 남아 있으니 훨씬 덜 흔들립니다.

다만 Codex 로그에도 특징이 있습니다. Codex를 실제로 실행해야 로그가 갱신됩니다. 그래서 Token Ghost는 Codex 값 옆에 이 정보가 얼마나 오래됐는지도 같이 보여줍니다.

예를 들면 이런 식입니다.

```text
From session log, 40m ago
```

그리고 이미 리셋 시간이 지난 값은 그대로 과거 시간을 보여주지 않고, 다음 리셋 예상 시각을 계산해서 보여주도록 했습니다. 오래된 로그를 읽더라도 메뉴에서 완전히 이상한 과거 시간이 보이지 않게 하기 위해서입니다.

> Claude는 구조화된 로컬 데이터가 없으니 짧게 `/usage`를 읽되 너무 자주 읽지 않게 만들고, Codex는 화면 대신 로컬 로그의 `rate_limits`를 읽도록 했습니다.

---

## 노치 옆에는 짧게, 클릭하면 자세히

메뉴바에 너무 많은 걸 넣으면 금방 지저분해집니다. 특히 노치 있는 맥에서는 더 그렇습니다.

그래서 상단에는 Claude 현재 세션 사용률만 짧게 남겼습니다.

```text
👻22%
```

그리고 클릭했을 때만 Claude와 Codex의 자세한 정보를 보여줍니다.

```text
Claude
Current: 🟨🟨🟨⬜️⬜️⬜️⬜️⬜️ 36% (~9:10pm)
Weekly:  🟩🟩⬜️⬜️⬜️⬜️⬜️⬜️ 25% (~Jul 15 6pm)

Codex
5 Hour:  🟩⬜️⬜️⬜️⬜️⬜️⬜️⬜️ 12% (~8:28pm)
Weekly:  🟩🟩🟩⬜️⬜️⬜️⬜️⬜️ 35% (~Jul 17 6am)
```

아무튼 실제 화면으로는 이렇게 보인답니다.

![Image](https://upload.cafenono.com/image/slashpagePost/20260712/145209_k3HO9rywGmGpyqqpd1?q=80&s=1280x180&t=outside&f=webp)

---

## 설치도 최대한 단순하게

그래서 설치는 한 줄

```bash
curl -fsSL https://raw.githubusercontent.com/zoeymakes/token-ghost/v1.0.0/install.sh | bash
```

SwiftBar가 있으면 바로 플러그인을 설치하고, 없으면 가능한 경우 SwiftBar 설치도 도와줍니다.

물론 Claude Code CLI와 Codex CLI는 각자 로그인되어 있어야 합니다. Token Ghost는 비밀번호나 API Key, 계정 인증정보를 저장하지 않고, 사용률과 리셋 시각만 로컬 캐시에 저장합니다.

---

## 필요한 분들은 써보세요

이건 제가 쓰려고 만든 작은 도구입니다.

매번 사용량 확인하러 들어가는 게 귀찮아서, 그냥 맥 메뉴바에 붙여버렸습니다.

Claude Code나 Codex를 자주 쓰고, 맥 메뉴바를 자주 보는 분이라면 꽤 편할 수 있습니다.

GitHub: [https://github.com/zoeymakes/token-ghost](https://github.com/zoeymakes/token-ghost)

[GitHub - zoeymakes/token-ghost: A cute macOS menu bar plugin for checking Claude Code and Codex usage limits](https://github.com/zoeymakes/token-ghost)

설치:

```bash
curl -fsSL https://raw.githubusercontent.com/zoeymakes/token-ghost/v1.0.0/install.sh | bash
```

For the site tree, see the [root Markdown](https://zoey.day/.md).
