繁體中文 · English
Codex Usage Status is a macOS menu-bar HUD for monitoring the quota reported by the local Codex App Server. It keeps the quota summary visible while you work in Codex, without modifying the Codex window or calling private network endpoints.
Download the latest signed application from GitHub Releases:
https://github.com/SaiHoninbo/CodexUsageStatus/releases/latest
Direct download of the latest release asset:
https://github.com/SaiHoninbo/CodexUsageStatus/releases/latest/download/CodexUsageStatus.app.zip
Do not download the repository source archive for installation. The source archive does not contain a ready-to-run application bundle.
- macOS 14.0 or later
- Apple Silicon Mac (the distributed application is currently an arm64 build)
- A local Codex / ChatGPT App Server installation that can run
codex app-server --listen stdio://
- Download
CodexUsageStatus.app.zipfrom the Releases page. - Double-click the ZIP to extract
CodexUsageStatus.app. - Move the extracted app to
/Applications. - On first launch, right-click
CodexUsageStatus.appand choose Open. - If macOS blocks the app, open System Settings → Privacy & Security, scroll to the security message, and choose Open Anyway.
- Launch Codex Usage Status. It appears as a menu-bar item and can show the floating HUD beside Codex.
The application is currently ad-hoc signed and is not notarized with Apple. The first-launch confirmation is therefore expected. Keeping the app in /Applications also gives the login-item registration a stable path.
Most monitoring features do not require Accessibility permission. Enable Accessibility only when you want to use the HUD clipboard controls:
- Paste clipboard: sends
⌘Vto the foreground Codex window. - Paste and submit: sends
⌘V, waits for the paste to finish, then sends one Return/Enter.
Open System Settings → Privacy & Security → Accessibility and enable CodexUsageStatus.app. If the app was moved or replaced, macOS may show a new permission entry; remove an obsolete entry and enable the current app path.
Notification permission is optional. Quota and token activity continue to work if notifications are denied.
- Primary and secondary quota remaining percentages
- Reset countdown and stale/offline state
- Low-quota notifications and menu-bar color status
- Token Activity summaries and daily token buckets
- Thirty-day local quota and token history
- Account health and managed multi-account profiles
- Per-account quota and aggregate token activity views
- HUD placement that follows the Codex window across displays
- Clipboard-only and paste-and-submit controls
- A native right-click HUD menu for refresh, account scope, sync cadence, clipboard actions, update checks, and HUD reset
- Update checks for new GitHub Releases
The popover is intentionally organized into three sections: Overview for current quota and quick actions, History for quota and Token Activity trends, and Settings for HUD, notifications, account management, sync, and updates. The app does not run a direct Git client or a third-party Feed poller.
The menu-bar title stays focused on the active account's quota, for example Codex 78%. Token activity and reset-credit details remain in the popover instead of replacing the quota summary.
The app talks to the local Codex App Server over its stdio interface. It does not use a private web endpoint, inject UI into Codex, or manage API keys.
- The public repository, release ZIP, history files, Token Activity files, profile index, and logs do not contain ChatGPT credentials or tokens. Managed profiles may keep a local
auth.jsoninside the user's owner-only Application SupportCODEX_HOMEso the local App Server can run; it is never uploaded, bundled, committed, or copied into the public release. - Prompt text, conversation text, thread titles, and raw App Server authentication data are not written to the app's history files.
- Local history, token activity, and managed-account credentials are kept under the user's Application Support directory with user-only file permissions.
- Managed profiles use separate
CODEX_HOMEdirectories and separate App Server processes. - The system
~/.codexprofile is not copied into the app bundle or release ZIP.
The app checks the GitHub latest release endpoint at startup and periodically while running. When a newer version is available:
- The app shows an update state in the popover and may display one notification for that release.
- You choose Open Release to review the official GitHub Release and download it manually.
The app never downloads, extracts, replaces, or relaunches itself. Manual installation is performed by the user through Finder. Release metadata is accepted only when the version is path-safe and the link is an HTTPS URL on this repository's GitHub Releases page.
Maintainers should publish a GitHub Release with:
- A semantic-version tag such as
v2.4.28 - An asset named exactly
CodexUsageStatus.app.zip - The signed app bundle inside the ZIP
- No
._*,__MACOSX, source, test, auth, token, or history files
Record the checksum and formal signing identity for each published artifact in the release notes or maintainer evidence. A commit or ZIP pushed to main alone does not create an in-app release update.
Use the repository root where you cloned this project. The build and packaging commands below use paths relative to that root; no machine-specific path is required.
<repository-root>
Build the macOS executable with Swift Package Manager:
swift build --disable-sandbox -c releaseFor a public or distributable package, use the packaging script instead. It omits release debug information that could otherwise contain local build paths:
./script/build_and_run.sh packageThe packaging script creates an ad-hoc signed app, validates the bundle, and writes the single canonical artifact to:
outputs/CodexUsageStatus.app.zip
Run the core checks with:
./script/run_core_tests.shMake sure Codex is running and the local App Server can be started. Use the menu-bar item to open the popover and press Refresh. The HUD follows the Codex window only when it can identify a Codex window.
Confirm that the currently running copy of CodexUsageStatus.app is enabled under Accessibility. If you replaced the app, re-enable the new path and restart the app before trying the button again.
A maintainer must publish a GitHub Release first. The release should contain the exact asset name CodexUsageStatus.app.zip; the app only opens the official release page and does not fetch the asset itself.
Use the right-click Open flow once, then use System Settings → Privacy & Security → Open Anyway if macOS still blocks the ad-hoc signed bundle.
This project is released under the MIT License. See LICENSE.
For security and privacy boundaries, see SECURITY.md.