---
title: "resetcoupon-watch"
url: "https://claudemods.dev/en/builds/resetcoupon-watch-77cae4"
source: "https://github.com/maseungsidea/ResetCoupon-Watch"
source_type: "github"
repo: "https://github.com/maseungsidea/ResetCoupon-Watch"
author: "maseungsidea"
author_handle: "maseungsidea"
stars: 0
category: "Notifications & reminders"
categories: ["notifications"]
tags: ["codex", "hooks", "rate-limit", "statusline", "toasts"]
permission_level: 3
scan_complete: true
install: "claude plugin marketplace add maseungsidea/ResetCoupon-Watch\nclaude plugin install resetcoupon-watch@resetcoupon-watch"
added: "2026-10-24T02:44:53.919Z"
updated: "2026-10-24T02:45:28.289Z"
locale: "en"
content_locale: "en"
---

# resetcoupon-watch

A Claude Code mod that warns you **before a rate-limit reset coupon lapses unused**: Claude's reset grants and Codex's reset credits, with the nearest deadline in KST and its D-day. Read-only and zero model calls: it never redeems a coupon.

## Description

Adds a status line (or band in the desktop app) showing the nearest reset coupon deadline in KST with a use-by night, toasts at 72/24/12 hours left, and a /resetcoupon-watch report covering Claude reset grants and Codex reset credits. Read-only and zero model calls; it never redeems a coupon. Installed via the plugin marketplace. Times are KST only and the Claude source uses an undocumented endpoint.

## Install

```
claude plugin marketplace add maseungsidea/ResetCoupon-Watch
claude plugin install resetcoupon-watch@resetcoupon-watch
```

## Original README

# ResetCoupon-Watch

A Claude Code mod that warns you **before a rate-limit reset coupon lapses unused**: Claude's reset grants and Codex's reset credits, with the nearest deadline in KST and its D-day. Read-only and zero model calls: it never redeems a coupon.

![The status line: the nearest coupon, when it lapses and the night to use it by](docs/terminal-status.png)

- **Status line:** `🎟 reset coupon D-6 · Codex lapses 10-30(Fri) 02:28 KST → use by 10-29(Thu) night · Claude 0 · Codex 2`. Under 72 hours left it turns into `⚠️ reset coupon D-1 (30h left) · …`. In the desktop app, which folds extra plugin status lines behind `+1`, the same line is drawn in the band above the prompt instead (it gives way to a survey or another plugin's band).
- **Use-by day, not just the expiry:** a coupon that lapses before noon KST is marked *use by the night before*, since a 01:00 deadline is gone by the time you sit down. The D-day counts to that use-by day.
- **Toasts** at 72, 24 and 12 hours left, once each per coupon. A session opened late shows only the nearest threshold it crossed.
- **`/resetcoupon-watch`:** every coupon with its expiry, use-by day and time left, and which source could not be read. It reads both sources afresh when you run it.

![The /resetcoupon-watch report: no Claude grant, two Codex credits](docs/terminal-report.png)

The screenshots come from a real Claude Code 2.1.309 terminal session on 2026-10-23, with live data from both sources.

## Install

At the prompt of a terminal session:

```
/plugin install resetcoupon-watch --marketplace maseungsidea/ResetCoupon-Watch
```

From a shell:

```
claude plugin install resetcoupon-watch --marketplace maseungsidea/ResetCoupon-Watch
```

Answer `y` to add the marketplace, then pick a scope. In the desktop app, go to **+ → Plugins → Add marketplace**.

The `language` option (`en` / `ko`) sets the language of the status line, the report and the toasts.

## Where the coupons come from

- **Claude:** the reset grants on your account (`/api/oauth/usage?cedar_ember=1`), read with the session's own sign-in through the mod API (`$.session.authorize()`). The mod never opens your keychain or credential files. This endpoint is not documented and may change. A refused or empty answer is reported as *could not read*, not as zero coupons. Redeem a coupon in Claude Code with `/limit-reset`.
- **Codex:** reset credits from `codex app-server` (`account/rateLimits/read`), read with Codex's own sign-in. Redeemed credits drop out. An error answer, or a count without the credit list, is reported as *could not read*. Redeem a credit in Codex with `/usage`.

Both sources are read when a session starts and then at most once an hour, after a main turn. The last reading is also written to `~/.claude/resetcoupon-watch/passes.json`, so a script outside Claude Code (a daily phone push, for example) can use it without touching your credentials.

## Why

Reset coupons arrive without much notice and expire on a fixed date. On 2026-10-22 a Claude grant was still unused when it lapsed at 01:00 KST that night. Nothing on screen showed the deadline, and a "10-23" date read like a whole day left. ResetCoupon-Watch keeps the nearest deadline in view and says which night is the last chance.

## How it compares

These are the reset coupon tools found on claudemods.dev and GitHub as of 2026-10-23, checked against their source or README.

| | ResetCoupon-Watch | [codex-reset-credits-skill](https://github.com/sudoHG/codex-reset-credits-skill) | [codex-reset-dates](https://github.com/ayv4zyan/codex-reset-dates) | [CodexBar](https://github.com/steipete/CodexBar) |
|---|---|---|---|---|
| Runs in | Claude Code (mod) | Codex (skill) | a terminal (Node CLI) | the macOS menu bar (app) |
| Claude reset grants | yes | no | no | yes |
| Codex reset credits | yes | yes | yes | yes |
| Deadline shown without asking | yes, status line or band, plus toasts | no, answers when asked | no, prints when run | yes, menu bar |
| Credentials | Claude: the session's own sign-in, via the mod API; Codex: Codex's own sign-in, via `codex app-server` | reads `~/.codex/auth.json` | reads `~/.codex/auth.json` | keychain access or prompts |
| Needs | `codex` on PATH for Codex | Python | Node | macOS 14+ |

Claude usage mods on claudemods.dev (claude-pacer, agent-usage-guard and similar) watch usage windows, not reset coupons.

In short: CodexBar is the broad one. It shows usage and limits for many providers, coupons included, in its own app. ResetCoupon-Watch does one job inside Claude Code: it keeps the coupon deadline in view, adds a use-by night and toasts, and needs no extra app or keychain prompt.

### Who it's for

- **You have Claude or Codex reset coupons and have let one lapse,** or nearly did.
- **You work in Claude Code all day** and want the deadline where you already look, not in another app.
- **You use both Claude and Codex** and want one place for both kinds of coupon.
- **You want nothing done on your behalf.** It only reads; redeeming stays your call.

### Where it does not fit

- **Times are KST only.** The use-by rule (before noon → the night before) is written for that zone.
- **The Claude source is undocumented.** If the endpoint changes, the Claude side shows *could not read* until the mod is updated.
- **It reads only while Claude Code is open.** The cache file lets an outside script cover the gaps, but such a script is not included.
- **API-key sessions have no reset grants,** so only the Codex side applies there.
- **Codex needs the `codex` CLI on PATH.** Without it the Codex side shows *could not read*.

## Validation

`claude plugin test` runs 10 tests:
- KST labels and the use-by night, checked against real expiries (the Claude grant that lapsed 2026-10-23 01:00 KST, and Codex credits lapsing 10-30 and 11-07).
- D-day counting.
- Redeemed and paused coupons dropping out.
- A refused or error answer counted as unread, for either source.
- Toast thresholds firing once each.
- The report.
- The status line in a terminal versus the band in the desktop app.

Live on Claude Code 2.1.309, both sources were read in a terminal session (the screenshots above) and in the desktop app's band. `claude plugin validate` reports no errors.

## License

MIT
