Codex CLI subscription utilisation, parsed from the local session JSONL. Each token_count event Codex writes carries the 5h (primary) and 7d (secondary) rate-limit windows; we read the most recent one. No HTTP — re-fetching this would mean making a billable inference call.
Kind Safety Shapes cached Safe ratio, text, text_block, markdown_text_block, entries, bars, badge, timeline
Option Type Required Default Description window"5h" | "7d" | "primary" | "secondary" no "5h" Which window the single-value shapes (Ratio, Badge) report. Multi-row shapes always list both windows.
Shape Renderers ratioanimated_boot , animated_postfx , animated_scanlines , animated_splitflap , animated_wave , gauge_battery , gauge_circle , gauge_line , gauge_segment , gauge_thermometertextanimated_boot , animated_figlet_morph , animated_postfx , animated_scanlines , animated_splitflap , animated_typewriter , animated_wave , text_ascii , text_plaintext_blockanimated_boot , animated_postfx , animated_scanlines , animated_splitflap , animated_wave , list_plainmarkdown_text_blocktext_markdownentriesanimated_boot , animated_postfx , animated_scanlines , animated_splitflap , animated_wave , grid_tablebarsanimated_boot , animated_postfx , animated_scanlines , animated_splitflap , animated_wave , chart_bar , chart_pie , list_rankingbadgeanimated_boot , animated_postfx , animated_scanlines , animated_splitflap , animated_wave , status_badgetimelineanimated_boot , animated_postfx , animated_scanlines , animated_splitflap , animated_wave , list_timeline
┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
5 h · r e s e t s 3 h │ █ █ █ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ │ ▮ 1 8 %
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘
id = " codex_subscription "
fetcher = " codex_subscription "
█ █ █ █ █ █ █
█ █ █ █ █ █ █ 5 h · r e s e t s 3 h
█ █ █ █ █ █ █
id = " codex_subscription "
fetcher = " codex_subscription "
5 h · r e s e t s 3 h : ▓ ▓ ▓ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ 1 8 %
id = " codex_subscription "
fetcher = " codex_subscription "
5 h · r e s e t s 3 h ▰ ▱ ▱ ▱ ▱ 1 8 %
id = " codex_subscription "
fetcher = " codex_subscription "
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
█ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █
id = " codex_subscription "
fetcher = " codex_subscription "
render = " gauge_thermometer "
▐ ▛ ▘ ▝ ▜ ▌ █ ▀ ▀ ▜ ▌ ▗ █ ▟ ▀ ▙ ▄ ▗ ▖ █ ▀ █ ▝ █ █ ▀ █ ▄ ▗ ▖
▐ ▌ ▜ ▞ ▜ ▖ ▜ ▟ ▜ ▖ ▟ ▀ ▙ ▐ ▌ ▀ ▀ ▙ ▐ ▙ ▜ ▖ █ ▜ ▄ ▛ ▀ ▗ ▛ ▗ ▛ ▗ ▄ █ ▗ ▛ ▀ ▗ ▛
▐ ▌ ▐ ▙ ▟ ▘ ▐ ▌ ▝ ▘ █ █ ▐ ▌ ▄ █ ▐ ▌ ▐ ▌ █ █ █ ▗ ▛ ▗ ▖ █ █ █ █ ▗ ▛ ▗ ▖
▝ ▀ ▘ ▟ ▙ ▀ ▀ ▝ ▀ ▘ ▝ ▀ ▘ ▝ ▀ ▘ ▀ ▘ ▝ ▘ ▀ ▀ ▀ ▝ ▀ ▘ ▀ ▝ ▘ ▀ ▝ ▀ ▝ ▘ ▀ ▀ ▝ ▘
id = " codex_subscription "
fetcher = " codex_subscription "
[ p r o ] 5 h 1 8 % · 7 d 7 %
id = " codex_subscription "
fetcher = " codex_subscription "
p l a n : p r o
5 h 1 8 % · r e s e t s 3 h
7 d 7 % · r e s e t s 5 d
id = " codex_subscription "
fetcher = " codex_subscription "
p l a n : p r o
- 5 h — 1 8 % ( r e s e t s 3 h )
- 7 d — 7 % ( r e s e t s 5 d )
id = " codex_subscription "
fetcher = " codex_subscription "
p l a n p r o
5 h 1 8 % ( r e s e t s 3 h )
7 d 7 % ( r e s e t s 5 d )
id = " codex_subscription "
fetcher = " codex_subscription "
█ █ █
█ █ █
█ █ █
█ █ █
█ █ █ ▅ ▅ ▅
█ █ █ █ █ █
█ █ █ 7 0 0
5 h 7 d
id = " codex_subscription "
fetcher = " codex_subscription "
● ■ 5 h 7 2 . 0 %
● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ● ● ● ● ● ● ■ 7 d 2 8 . 0 %
● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ● ● ● ● ● ●
● ● ● ● ● ● ● ● ● ● ●
●
id = " codex_subscription "
fetcher = " codex_subscription "
1 . 5 h 1 8 %
2 . 7 d 7 %
id = " codex_subscription "
fetcher = " codex_subscription "
● 5 h 1 8 %
id = " codex_subscription "
fetcher = " codex_subscription "
i n 3 h │ 5 h r e s e t s
│ a t 1 8 %
i n 5 d │ 7 d r e s e t s
│ a t 7 %
id = " codex_subscription "
fetcher = " codex_subscription "