@ryoppippi

ccusage for Codex Cli: How Token Usage Tracking Became Possible (日本語)

20 Sept 2025 ・ 8 min read


English version coming in a few days!

はじめに

🚀 ccusage v17.0 リリース! codex対応です!! これでccusageシリーズでccとcodex両方いけます!! コマンドはこちら↓ ``` npx @ccusage/codex bunx @ccusage/codex@latest # ⚠️bunxは@latest必須なことに注意してください。つけ忘れるとcodex本体が起動します ```

ccusage
ccusage
@cc_usage

🚀 ccusage v17.0 is here! Now with OpenAI Codex support! Track token usage & costs across Claude Code AND Codex in one CLI. Monitor GPT-5, 1M context windows, and all your AI coding expenses. npx @ccusage/codex bunx @ccusage/codex@latest ⚠️(@latest required for bunx)

Reply

ccusage が​ 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 サポートの​要望が​寄せられました。

しかしまあ無理でしょうと​いうのが​当時の​私の​見解でした。

理由は​シンプルです:

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日)

// 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 に​より、​payload に​構造化された​ token 使用量データが​追加されました。

この​変更は​「コンテキスト情報を​メインループに​移動して、​ループの​中断や​自動圧縮の​開始に​使えるように​する」と​いう​目的で​実装された​ものでしたが、​結果​的に​ ccusage に​とって​必要不可欠な​情報提供に​つながりました。

変​更2:JSONL 形式での​セッション永続化​(9月9日)

# セッションファイルの保存先
$CODEX_HOME/sessions/**.jsonl

コミット 43809a4 に​より、EventMsg::TokenCount エントリが​ JSONL ファイルと​して​永続化されるようになりました。

これで、​ついに​ token 使用量データがアーカイブされ、​アクセス可能に​なったのです!

この​時点ですでに​ token 使用量を​解析し、​モデルを​ gpt-5 と​して​コスト計算を​行うことが​可能でした。 自分は​ちょうど​仕事の​タイミングで​忙しく、​やりたいなと​思いつつ手が​つけられずも​どかしく​思っていました。 実際この​直後に​ cxusage と​いう​ CLI が​リリースされていました。

変​更3:モデルメタデータの​追加​(9月11日)

{
	"type": "turn_context",
	"model": "gpt-5-codex",
	"timestamp": "2025-09-15T12:34:56Z"
}

コミット 674e3d3 に​より、​各ターンで​モデル情報が​記録されるようになりました。

GPT-5-Codex リリース

これらの​変更は​偶然では​ありません。​2025年9月15日の​ GPT-5-Codex 正式リリースに​向けた​準備の​一環でした。

OpenAI は​新モデルの​運用に​必要な​ロギングインフラを​整備し、​その​副産物と​して​ ccusage が​必要と​していた​データへの​アクセスが​可能に​なったのです。

ccusage v17.0.0 の​実装

あとは​ Claude Code の​時に​やってきた​ものを​ Codex に​移植するだけです。

// 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 の​構成を​ monorepo 化しました。​これが​本当に​大変でした。

また、​bun では​ monorepo で​ package を​開発して​ publish するのには​まだまだ​役不足であったので、​pnpm + catalogue への​移行も​行いました。

さらに、​ccusage 本体の​ bundle size を​減ら​すために、​MCP 機能を​ @ccusage/mcp と​いう​別 package に​切り出し、zod -> valibot への​移行も​行いました​(結果​ 1MB -> 600KB に​削減)。

これを​3日くらい​かけて​やりました。​まじで​大変だった。

加えて、​Codex 向けの​計算が​正しいか​どうか​コミッターの​ Ben と​何度も​やりとりを​しました。​いつも​ありがとう​ございます。

まとめ

born
で、​俺が​生まれたってわけ

ccusage v17.0.0 は​ GitHub で​公開中です。​ぜひ​お試しください!

bunx ccusage@latest --help
bunx @ccusage/codex@latest --help
bunx @ccusage/mcp@latest --help

スポンサー大募集!

スポンサーを​募集しています!ccusage 面白い!とか​もっと​ OSS を​開発して​ほしい!と​思った​方は​是非とも​スポンサーに​なってください!​(特に​ ccusage の​開発は​基本的には​無給かつボランティアです!)

いつも​応援してくださる​方には​本当に​感謝しています。​これ以外にも​ Vibe Coding や​開発の​ための​ OSS を​開発しているので​是非とも​サポートを​お願いします!

(いただいた​スポンサーの​うち、​一部は​ ccusage の​ contributor に​再分配しています)

sponsor

comment on bluesky / twitter
CC BY-NC-SA 4.0 2022-PRESENT © ryoppippi