Borrowing it
Nothing to install: this file belongs to jordan-edai/codex-reset-watcher. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/jordan-edai/codex-reset-watcher/main/AGENTS.mdgit clone --depth 1 https://github.com/jordan-edai/codex-reset-watcherWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/jordan-edai/codex-reset-watcher/agents-md)<a href="https://agentmods.dev/instructions/jordan-edai/codex-reset-watcher/agents-md"><img src="https://agentmods.dev/badge/instructions/jordan-edai/codex-reset-watcher/agents-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/jordan-edai/codex-reset-watcher/agents-md"><img src="https://agentmods.dev/badge/instructions/jordan-edai/codex-reset-watcher/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.02331 | $0.02331 |
| Opus 5.5 | $0.00932 | $0.00932 |
| Sonnet 5.5 | $0.00466 | $0.00466 |
| Haiku 4.5 | $0.00233 | $0.00233 |
Grade A, and why
codex-reset-watcher AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 190 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Agent Notes
This repo is Codex Reset Watcher, not Codex Cockpit.
Codex Reset Watcher is a small, open-source, local-first macOS menu bar app for Codex usage limits and reset credits. Keep changes scoped to that product.
Current State
- Public GitHub repo:
https://github.com/jordan-edai/codex-reset-watcher - Canonical local path:
/Users/everydayai/Documents/!Codex Projects/Rate Refresher Project - Compatibility path:
/Users/everydayai/Documents/Rate Refresher Project - Latest shipped release:
v0.4.4 - Check
git log --oneline --decorate -5for the currentmaincommit; this note tracks the repo state through thev0.4.4weekly reset-day title fix. - App bundle version is set in
script/build_and_run.sh.
Product Decisions
- The app must stay read-only.
- Do not redeem reset credits, reset usage, mutate account state, or add analytics.
- No OpenAI API key is required. The app uses the existing local Codex Desktop
login at
~/.codex/auth.json. - The app currently calls internal Codex Desktop endpoints:
https://chatgpt.com/backend-api/wham/usagehttps://chatgpt.com/backend-api/wham/rate-limit-reset-credits
- These endpoints can change without notice. Keep decoding tolerant and failure handling partial-data-friendly.
- The menu bar title currently shows weekly remaining capacity and the weekly
reset weekday, for example
57% | Sunday, with the status icon beside it. Never replace it with a banked-reset count, account label, or status sentence. - There is temporarily no menu-title metric selector while Codex does not return
the former 5-hour window. If weekly reset timing is missing, use
week; if weekly data is unavailable, show--% | week. Do not use 5-hour, generic/unclassified, or reset-credit data as a current title fallback. - Use an explicit SwiftUI
HStacklabel forMenuBarExtra; aLabelcan collapse to icon-only in the real macOS menu bar even when the title string itself is correct. - Display settings contain appearance only. Do not add a weekly/5-hour
menu-title selector back until Codex reliably returns the 5-hour window. Read
MENU_BAR_DISPLAY_PLAN.mdbefore restoring it. - Preserve the dormant 5-hour decoder, snapshot fields, and nudge logic. The
5-hour window is expected to return, and its prior display design is recorded
in
MENU_BAR_DISPLAY_PLAN.md. - Reset-credit rows in the dropdown should always label the date, for example
Reset 1 expires:. The 5-hour and weekly usage rows should also label when those windows reset. - Visual styling should flow through
CodexPaletteandCodexStyle. Prefer shared spacing, radius, type, row, and panel tokens over one-off view-local constants so the menu dropdown and desktop window stay visually aligned. - Appearance mode is shared by the menu dropdown and desktop window. Keep
Light/Dark/Auto routed through
CodexAppearanceMode, SwiftUIpreferredColorScheme, andNSApp.appearanceso custom palette colors actually switch in menu-bar popovers. - Usage capacity bars use remaining-percentage thresholds from the 2026 design refresh: green at 60% or higher, amber from 25% through 59%, and red below 25%. Blocked usage windows override percentage color with danger styling.
- Keep desktop reset rows responsive and column-based. Labels/details and large expiry dates should never share one flexible inline text row, because that caused overlap at the default utility-window width.
- Keep the main desktop window roomy enough by default. The window min/default
size tokens live in
CodexStyle.Size, andMainWindowControllerexpands restored undersized frames so older saved window sizes do not clip the footer. - Routine app surfaces should stay light. Avoid smoky gray, dark tinted row fills, and dark terminal-block branding for normal states; use icons, borders, badges, and meters for emphasis, and reserve colored fills for warning/danger.
- Read
DESIGN_SYSTEM.mdbefore making visual changes. - The menu dropdown uses fixed icon, content, metric, and date columns. Preserve that rhythm when adding rows so labels do not bleed into popover edges.
- Keep the menu dropdown comfortably sized. Do not solve menu fit by stacking overly dense rows; widen the popover and use readable row heights when reset credits and footer actions are visible together.
- The menu dropdown must hug its intrinsic content height. Do not add a
screen-sized frame, forced viewport,
ScrollView, orViewThatFitswrapper that stretches it beyond the height its visible rows require. - Menu section order is fixed:
Display settings,Current limits, thenBanked Resets Expiration, followed by the usage nudge. - Cached snapshots and their cleanup actions belong only in the full desktop app. Do not add them back to the menu dropdown.
- The active account label can come from the usage response email, local
id_tokenemail/name, or the genericCodex accountfallback. Do not expose account-ID suffixes in user-facing labels. - Multi-account support is snapshot-based. The active account refreshes live; other accounts are cached last-seen snapshots only.
- Do not describe cached snapshots as simultaneous live accounts. They are local records from previous active Codex Desktop logins.
- Snapshot persistence must stay minimized and derived-only. Do not store bearer tokens, refresh tokens, ID tokens, raw auth JSON, raw endpoint JSON, full account IDs, user IDs, cookies, API keys, or reset credit IDs.
- Account snapshot keys are salted hashes stored under Application Support.
- Refreshes must use one loaded auth context for identity, usage, and reset credits so account switches cannot mix data across accounts.
- When the auth context has a stable account ID, use that as the snapshot key. The usage endpoint can report an account identifier from a different namespace; do not reject otherwise-valid active usage data solely because those strings differ.
- Menu cached-snapshot rows should focus the existing main window and update the
shared account selection. Do not call
openWindow(id: "main")directly from those rows, becauseWindowGroupcan create duplicate main windows. - The desktop window intentionally uses a fixed two-pane sidebar/detail shell,
not a native
NavigationSplitView. The native split view's sidebar toggle can hide the account list in this compact utility window. - User-facing copy should call non-active saved records
cached snapshots, not linked accounts or profiles. They are local last-seen records only. - Stale cached snapshots must be removable without clearing all cached
snapshots. Keep
Clear staleavailable from the desktop sidebar/footer, and keep the selected stale row action labeledForget stale. - Before claiming a two-real-account flow is verified on a user machine, manual QA must include signing into a second real Codex Desktop account and checking that the previous login appears only as a cached snapshot.
- Reset count should use server
available_countwhen provided so malformed detail rows do not undercount banked resets. - If
available_countis higher than the usable expiry rows returned by Codex, show explicit missing-expiry rows rather than hiding the extra banked resets. - Treat Codex
allowed: false/limit_reachedusage responses as blocked even if the percentage fields still decode. Blocked is more urgent than normal reset-advice nudges. - Do not infer
5h limitorWeekly limitfrom endpoint order whenlimit_window_secondsis missing. Use genericPrimary limit/Secondary limitrows until Codex returns a trustworthy duration. - If Codex returns duplicate known window durations, keep the first known window and downgrade the duplicate to a generic row so the UI does not show two weekly or two 5h cards.
- Guard
reset_atand reset-duration math. Implausible epochs, infinities, and overflowing intervals should become missing timing data, not crashes. - Trusted Codex endpoint checks should stay exact: HTTPS,
chatgpt.com, known/backend-api/wham/...path, and no userinfo, query, fragment, or custom port. - Reject empty auth tokens, redirects to an untrusted final URL, and successful JSON responses with no recognized payload. A successful HTTP status alone is not proof that the endpoint returned usable Codex data.
- Keep the dedicated refresh URLSession stateless: no shared cookies, URL cache, or credential storage.
- Preserve unknown/partial/error states. Never convert missing counts or failed endpoint results into a confirmed zero or a newly refreshed timestamp.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 190 lines · 2,331 tokens per session scan A c8de8b4da502
codex-reset-watcher AGENTS.md is an instructions file published in the GitHub repository jordan-edai/codex-reset-watcher (105 stars, last pushed 3mo ago), licensed MIT. It adds 2,331 tokens to every session, about $0.0093 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
codex-reset-watcher AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| codex-reset-watcher AGENTS.mdjordan-edai/codex-reset-watcher | Instructions file | 105 | 3mo ago | MIT | A | 2,331 | Codex, OpenCode |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | today | MIT | A | 9,719 | GitHub Copilot |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | today | MIT | A | 5,516 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | today | MIT | A | 4,680 | Codex, OpenCode |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | today | MIT | A | 3,093 | GitHub Copilot |
| vscode model-prompts.instructions.mdmicrosoft/vscode | Instructions file | 195k | today | MIT | A | 2,022 | GitHub Copilot |