---
title: "ccusage for Codex Cli: How Token Usage Tracking Became Possible (日本語)"
date: '2025-09-20'
isPublished: true
lang: ja
---
> English version coming in a few days!
# はじめに
ccusage が [v17.0.0](https://github.com/ryoppippi/ccusage/releases/tag/v17.0.0) にてついに OpenAI Codex の token 使用量追跡をサポートしました!!
🎉🎉
今回は、なぜ Codex サポートが「不可能」から「可能」になったのか、その技術的な背景と実装の詳細について解説します。
# ccusage とは?
ccusage とは、言わずと知れた Claude Code の token 使用量、そして本来の API コストを計算し、開発者をニヤニヤさせるための CLI ツールです。
直近では、8K+ の GitHub スター、400K+ のダウンロード数を達成しました!本当にありがとうございます。
# 最初の壁:なぜ Codex サポートは不可能だったのか
Claude Code が5月下旬から大流行し、5月末に ccusage がリリースされ、Claude Code のエコシステムは大いに盛り上がりました。
7月には Gemini CLI が、8月ごろから4月にすでにリリースはされていたものの注目されていなかった OpenAI Codex CLI が GPT-5 のリリースとともに再注目され始めました。
当然、ccusage のユーザーからも Codex サポートの要望が寄せられました。
[@preview](https://github.com/ryoppippi/ccusage/issues/626)
しかしまあ無理でしょうというのが当時の私の見解でした。
理由はシンプルです:
**OpenAI Codex は、token 使用量データを解析可能な形式でログに残していなかった**
セッションファイルに token 数の情報が存在しなければ、それをトラッキングすることは不可能です。
もちろん以下のような方法も考えられましたが:
- Codex は OSS なので、token 情報を残すように Fork 版を作る
- 通信をモックして token 情報を得る(これは Node.js 版の時は可能だったが、Rust 版に移行したことで実質不可能になった)
まあ現実的ではないですね。
といいつつも、常にリリースを追いかけてはいました。
## 転機:2025年9月の OpenAI アップデート
2025年9月、OpenAI は GPT-5-Codex のリリースに向けて、Codex CLI の大幅なアップデートを行いました。このアップデートこそが、ccusage にとってのゲームチェンジャーとなったのです。
### 変更1:構造化された token 使用量データの追加(9月6日)
```rust
// Before: token 情報が不明瞭
EventMsg::TokenCount { ... }
// After: 構造化された TokenCountEvent
TokenCountEvent {
input_tokens: u32,
cached_input_tokens: u32,
output_tokens: u32,
reasoning_output_tokens: u32,
total_tokens: u32,
}
```
[コミット 0269096](https://github.com/openai/codex/commit/0269096229e8c8bd95185173706807dc10838c7a) により、payload に構造化された token 使用量データが追加されました。
この変更は「コンテキスト情報をメインループに移動して、ループの中断や自動圧縮の開始に使えるようにする」という目的で実装されたものでしたが、結果的に ccusage にとって必要不可欠な情報提供につながりました。
[@preview](https://github.com/openai/codex/pull/3135)
### 変更2:JSONL 形式でのセッション永続化(9月9日)
```bash
# セッションファイルの保存先
$CODEX_HOME/sessions/**.jsonl
```
[コミット 43809a4](https://github.com/openai/codex/commit/43809a454e5c6348418fc2d5ace1eb0a98f59847) により、`EventMsg::TokenCount` エントリが JSONL ファイルとして永続化されるようになりました。
これで、ついに token 使用量データが**アーカイブされ、アクセス可能**になったのです!
この時点ですでに token 使用量を解析し、モデルを gpt-5 としてコスト計算を行うことが可能でした。
自分はちょうど仕事のタイミングで忙しく、やりたいなと思いつつ手がつけられずもどかしく思っていました。
実際この直後に [`cxusage`](https://www.npmjs.com/package/cxusage) という CLI がリリースされていました。
### 変更3:モデルメタデータの追加(9月11日)
```json
{
"type": "turn_context",
"model": "gpt-5-codex",
"timestamp": "2025-09-15T12:34:56Z"
}
```
[コミット 674e3d3](https://github.com/openai/codex/commit/674e3d3c90d78508602c720c0f2d304ec5715a26#diff-81c43c273518e6060612e02cf13bc1863785ee2316ce94ded66d624cf4621041R1795) により、各ターンでモデル情報が記録されるようになりました。
## GPT-5-Codex リリース
これらの変更は偶然ではありません。2025年9月15日の **GPT-5-Codex 正式リリース**に向けた準備の一環でした。
OpenAI は新モデルの運用に必要なロギングインフラを整備し、その副産物として ccusage が必要としていたデータへのアクセスが可能になったのです。
## ccusage v17.0.0 の実装
あとは Claude Code の時にやってきたものを Codex に移植するだけです。
```typescript
// JSONL パーサーの実装(簡略化)
export async function parseCodexSession(sessionPath: string) {
const lines = await readLines(sessionPath);
return lines
.map(line => JSON.parse(line))
.filter(entry => entry.type === 'TokenCount')
.map(entry => ({
inputTokens: entry.input_tokens,
outputTokens: entry.output_tokens,
cachedTokens: entry.cached_input_tokens,
reasoningTokens: entry.reasoning_output_tokens,
model: extractModel(entry),
}));
}
```
主な実装ポイント:
1. `$CODEX_HOME/sessions/` 配下の JSONL ファイルを解析
2. token 使用量を抽出
3. `turn_context` エントリから使用モデルを特定
4. token 数とmodelの価格を付き合わせてコスト計算
## 技術的な課題
今回は新しいコマンドをリリースしたので、[repository](https://ccusage.com/gh) の構成を monorepo 化しました。これが本当に大変でした。
また、bun では monorepo で package を開発して publish するのにはまだまだ役不足であったので、pnpm + catalogue への移行も行いました。
さらに、ccusage 本体の bundle size を減らすために、MCP 機能を [`@ccusage/mcp`](https://www.npmjs.com/package/@ccusage/mcp) という別 package に切り出し、`zod` -> `valibot` への移行も行いました(結果 1MB -> 600KB に削減)。
これを3日くらいかけてやりました。まじで大変だった。
加えて、Codex 向けの計算が正しいかどうかコミッターの [Ben](https://x.com/ben_vargas) と何度もやりとりをしました。いつもありがとうございます。
## まとめ

---
ccusage v17.0.0 は [GitHub](https://github.com/ryoppippi/ccusage) で公開中です。ぜひお試しください!
```bash
bunx ccusage@latest --help
bunx @ccusage/codex@latest --help
bunx @ccusage/mcp@latest --help
```
# スポンサー大募集!
スポンサーを募集しています!`ccusage` 面白い!とかもっと OSS を開発してほしい!と思った方は是非ともスポンサーになってください!(特に ccusage の開発は基本的には無給かつボランティアです!)
いつも応援してくださる方には本当に感謝しています。これ以外にも Vibe Coding や開発のための OSS を開発しているので是非ともサポートをお願いします!
(いただいたスポンサーのうち、一部は ccusage の contributor に再分配しています)

[@preview](https://ccusage.com/sponsor)