<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Codex Reset</title>
    <description>The latest articles on DEV Community by Codex Reset (@codexreset).</description>
    <link>https://dev.to/codexreset</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4089091%2Fed4f16f9-5124-4fda-8be6-0d707a7ef6b3.png</url>
      <title>DEV Community: Codex Reset</title>
      <link>https://dev.to/codexreset</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codexreset"/>
    <language>en</language>
    <item>
      <title>Is a Codex usage-limit reset coming? Check from your terminal with a free API (or MCP)</title>
      <dc:creator>Codex Reset</dc:creator>
      <pubDate>Thu, 24 Sep 2026 02:24:07 +0000</pubDate>
      <link>https://dev.to/codexreset/is-a-codex-usage-limit-reset-coming-check-from-your-terminal-with-a-free-api-or-mcp-3enb</link>
      <guid>https://dev.to/codexreset/is-a-codex-usage-limit-reset-coming-check-from-your-terminal-with-a-free-api-or-mcp-3enb</guid>
      <description>&lt;p&gt;If you use OpenAI Codex a lot, you've probably hit the weekly limit and asked the same question everyone asks: &lt;em&gt;is a reset coming, or should I just wait it out?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There are two different kinds of "reset", and people mix them up:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Your own windows.&lt;/strong&gt; Codex meters usage per account, in a rolling window that starts from &lt;em&gt;your&lt;/em&gt; first request. &lt;code&gt;/status&lt;/code&gt; inside Codex shows when yours rolls over. Nobody else can predict it for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global early resets.&lt;/strong&gt; Every so often OpenAI resets everyone's limits early: after an incident, a bug that drained usage, or just a milestone. These are announced informally on X, with no schedule and no status page.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This post is about the second kind. &lt;a href="https://codex-reset.com/" rel="noopener noreferrer"&gt;codex-reset.com&lt;/a&gt; tracks those announcements, keeps a dated record with source links, and publishes a probability that another one lands in the next 24 or 48 hours. All of it is available as &lt;strong&gt;free JSON with no API key&lt;/strong&gt;, and as an &lt;strong&gt;MCP server&lt;/strong&gt; you can plug into Codex itself. Below is how to use both from a terminal.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Disclosure: this account belongs to the project. Everything below is free to use; the only condition is a visible credit if you show the data to other people.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  1. "Is a reset likely soon?"
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://codex-reset.com/api/forecast &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s1"&gt;'my-script/1.0 (+https://example.com)'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | jq &lt;span class="s1"&gt;'{p24: .probabilities.rounded_24h, p48: .probabilities.rounded_48h, confidence, last: .last_reset_at}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"p24"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"p48"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;35&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"last"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-09-12T08:09:17.000Z"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's a percentage chance of a global reset within 24h and 48h, how confident the model is, and when the last confirmed reset happened. It's a forecast, not a promise: treat 20% as "probably not today".&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;-A&lt;/code&gt; header matters. Server-side readers are asked to send a &lt;code&gt;User-Agent&lt;/code&gt; that names the project, so the site can tell real integrations from anonymous scrapers.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. "When was the last reset, and where was it announced?"
&lt;/h2&gt;

&lt;p&gt;Every entry in the record links to the original post:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://codex-reset.com/api/timeline &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s1"&gt;'my-script/1.0 (+https://example.com)'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'[.events[] | select(.group == "reset" and .announcement_state == "announced")]
           | sort_by(.announced_at) | reverse | .[0:3][]
           | "\(.announced_at)  \(.url)"'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2026-09-12T08:09:17.000Z  https://x.com/thsottiaux/status/2098685367058612394
2026-09-08T01:34:00.000Z  https://x.com/thsottiaux/status/2097043464538264003
2026-08-31T02:34:27.000Z  https://x.com/thsottiaux/status/2094252447271366730
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;announcement_state == "announced"&lt;/code&gt; filter matters. A post that only &lt;em&gt;promises&lt;/em&gt; a reset shows up in the record too, but a reset only counts once it's actually announced. That's the same rule the site's ✅ alerts use.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. "Is Codex down, or did I hit my limit?"
&lt;/h2&gt;

&lt;p&gt;When Codex starts failing, check whether it's an outage before you blame your quota:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; https://codex-reset.com/api/status-history &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s1"&gt;'my-script/1.0 (+https://example.com)'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.current.surfaces[] | "\(.label): \(.status)"'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Codex Web: operational
Codex API: operational
Codex CLI: operational
VS Code extension: operational
Codex in ChatGPT Desktop: operational
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Ask Codex directly (MCP)
&lt;/h2&gt;

&lt;p&gt;The same data is exposed as a read-only MCP server over Streamable HTTP. There's nothing to install, no key, and no account. Add it to &lt;code&gt;~/.codex/config.toml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[mcp_servers.codex-reset]&lt;/span&gt;
&lt;span class="py"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https://codex-reset.com/mcp"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or in Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http codex-reset https://codex-reset.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then just ask, in the agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Is Codex likely to reset its usage limits in the next 24 hours?"&lt;/li&gt;
&lt;li&gt;"When was the last verified Codex reset, and where was it announced?"&lt;/li&gt;
&lt;li&gt;"Is Codex down, or did I just hit my usage limit?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are three tools, &lt;code&gt;get_reset_forecast&lt;/code&gt;, &lt;code&gt;get_reset_timeline&lt;/code&gt; and &lt;code&gt;get_codex_status&lt;/code&gt;, all read-only. Config for Cursor, VS Code and others is in the &lt;a href="https://github.com/suvadadepolo-blip/codex-reset-mcp" rel="noopener noreferrer"&gt;codex-reset-mcp repo&lt;/a&gt;. The repo also installs as a Codex plugin.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A tiny "tell me when it resets" script
&lt;/h2&gt;

&lt;p&gt;The record only changes when a reset is announced, so a watcher just compares &lt;code&gt;last_reset_at&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;
&lt;span class="c"&gt;# Poll politely: the data refreshes about once a minute; every 5 minutes is plenty.&lt;/span&gt;
&lt;span class="nv"&gt;UA&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'reset-watch/1.0 (+https://example.com)'&lt;/span&gt;
&lt;span class="nv"&gt;last&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nv"&gt;now&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-sS&lt;/span&gt; &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$UA&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; https://codex-reset.com/api/forecast | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.last_reset_at'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$last&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$now&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$last&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;osascript &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'display notification "Codex limits were reset" with title "Codex"'&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="o"&gt;||&lt;/span&gt; notify-send &lt;span class="s2"&gt;"Codex limits were reset"&lt;/span&gt; 2&amp;gt;/dev/null &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Codex limits were reset at &lt;/span&gt;&lt;span class="nv"&gt;$now&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
  &lt;span class="k"&gt;fi
  &lt;/span&gt;&lt;span class="nv"&gt;last&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$now&lt;/span&gt;
  &lt;span class="nb"&gt;sleep &lt;/span&gt;300
&lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you'd rather not run anything, the site also pushes the same event to Telegram, Discord and browser notifications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using the data in your own tool
&lt;/h2&gt;

&lt;p&gt;The API is free and keyless, with CORS open. The terms fit in one line: if you show the data to people, credit it where it appears (&lt;code&gt;Data: codex-reset.com&lt;/code&gt;, linked), and send an identifying &lt;code&gt;User-Agent&lt;/code&gt; from servers. Field reference and polling guidance: &lt;a href="https://codex-reset.com/developers" rel="noopener noreferrer"&gt;codex-reset.com/developers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Several open-source menu-bar apps and bots already read it this way. If you build something on it, I'd like to hear about it in the comments.&lt;/p&gt;

</description>
      <category>codex</category>
      <category>openai</category>
      <category>mcp</category>
      <category>cli</category>
    </item>
  </channel>
</rss>
