Codex Reset: Four Different Things, One Keyword

Every announced Codex reset, dated and sourced - plus where things stand right now.

Current status

Current status Quiet No reset announced since the last one below.
Latest reset 2026-09-12 Most recent reset we have verified.
Next reset Cannot be given OpenAI does not publish a reset schedule.

Status is derived only from the sources listed below. It is not an official OpenAI status page. Last verified: .

Short answer: if you searched codex reset because Codex is misbehaving, the fix is almost never a single reset. Codex has four separate resets, they live in four different places, and they are not interchangeable.

What you actually wantWhat to doWhat it clearsWhat it leaves alone
Free up context so the model stops forgetting/compact, or /new / /clearthe conversation (summarised or dropped)files on disk, config.toml, your login
Stop Codex calling an endpoint that no longer existsdelete the stale model_provider block from ~/.codex/config.tomlthe custom provider routeyour ChatGPT login, your history
Get logged in againcodex logout then codex logincached credentials in ~/.codex/auth.jsonconfig.toml
Stop the stream dying mid-answerfix the transport: base_url, TLS trust, or the local proxy portnothing; it repairs the linkeverything above

Pick the wrong row and one of two things happens. You wipe work you could have recovered, or you "reset" something that was never broken, and the same error comes straight back on the next message.

Reset #1 - context. The one everybody gets half right

Ctrl+L does not reset anything. It scrolls the terminal view. The conversation is still fully in the model's context, so the model still remembers everything, still carries every failed attempt, and still bills you for all of it. If your symptom is "it forgot what I told it ten minutes ago", the terminal is not the thing to clean.

There are three real levels, and they differ only in what they keep:

One detail that only shows up after you have been burned: if /compact leaves you still near the ceiling, the conversation was simply too long for a summary to save you. /new is the answer, not a second /compact. The useful habit is to compress before the error, not after, because then you get to choose what survives.

Reset #2 - config. Deleting the model line is not enough

The single most misleading error in this family:

stream disconnected before completion: error sending request for url (http://127.0.0.1:57321/v1/responses)

It reads like a network fault. It is usually a stale provider block. That URL is the tell: Codex is not talking to OpenAI at all. It is talking to something on 127.0.0.1:57321, and nothing is listening there.

The diagnostic that settles it in one command:

netstat -ano | findstr 57321

Empty output means nothing is listening. Then check the config, because this is where the real problem lives:

model_provider = "CodexPlusPlus"
model = "deepseek-v4-flash"

[model_providers.CodexPlusPlus]
name = "CodexPlusPlus"
wire_api = "responses"
requires_openai_auth = true
base_url = "http://127.0.0.1:57321/v1"
experimental_bearer_token = "sk-xxx"

And here is the trap. Changing the model line alone does not fix it. If model_provider = "CodexPlusPlus" is still in the file, Codex keeps routing through the dead provider and keeps failing. You have to delete the model_provider line *and* the whole [model_providers...] block. A minimal working config is three lines:

model = "gpt-5.5"
forced_login_method = "chatgpt"
disable_response_storage = true

Then re-establish the login:

codex logout
codex login
codex login status

Logged in using ChatGPT is the confirmation. Nothing else counts.

Two more things this scenario teaches. First, if you *do* want to keep a local proxy, start it and re-run netstat: you should see LISTENING on that port. Then check which API shape it speaks. Codex here is calling /v1/responses, while plenty of local model proxies only implement /v1/chat/completions. A proxy that is running but speaks the wrong API looks exactly like a proxy that is not running at all.

Second, the login step can fail on its own:

Token exchange failed: error sending request for url (https://auth.openai.com/oauth/token)
Error code
token_exchange_failed

That is a different failure: the transport to the auth endpoint, not the provider config. Test it directly:

curl -I https://auth.openai.com/oauth/token
curl -I https://api.openai.com
curl -I https://chatgpt.com

If those fail, change the route you are going out through. Config fixes will not help.

Reset #3 - auth. Where the reset is invisible

The OAuth callback is the part nobody tells you about. Codex's sign-in flow opens a browser, and the browser is redirected back to a fixed local address: localhost:1455. A small local listener receives the token there.

If something else on your machine already owns port 1455, your editor's port forwarding quietly remaps the remote 1455 to a free local port such as 1456. The browser still goes to localhost:1455. The listener is on localhost:1456. The token is delivered to nobody, and the symptom is an endless spinner or a bare failure page.

The fix is to take the port back, not to reinstall anything:

sudo lsof -i :1455
kill -9 <PID>

Then in the editor's Ports panel, delete the old mapping and re-add 1455 explicitly, so the forwarded address reads exactly localhost:1455.

Rule out the network first so you are not chasing a ghost. If this returns HTTP 405 or 401, the machine can reach the auth endpoint fine and the problem is local:

curl -I https://auth.openai.com/oauth/token

If you are working over SSH or inside a container, do not attempt the browser flow at all. Authenticate on a machine with a browser, then copy the credential file to the same relative path on the target:

~/.codex/auth.json

And treat that file as a password. It is a bearer credential. It does not belong in a repository, an issue, or a screenshot.

Reset #4 - transport. When everything above is correct and it still dies

Three causes account for most of it, and all three look identical from the error message.

A missing or duplicated slash in base_url. This is the one that eats entire days:

base_url = "https://your-relay.example//v1"

One extra character. Requests go to a path that does not exist, the response body never parses, and you get stream disconnected before completion: stream closed before response. Fix the URL to a single slash and restart the client. If you added the double slash because someone's example showed it that way, you are not the first, and that is exactly how the mistake spreads.

A stale local trust store. On Windows the CLI and the browser do not verify certificates through the same path. The browser can show a perfectly normal chain while the CLI refuses:

curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)

The fix is to refresh the machine's root certificates rather than to touch Codex:

certutil -generateSSTFromWU roots.sst
certutil -addstore -f Root roots.sst

Two useful checks around it. If curl -I https://chatgpt.com starts returning a real HTTP response, even a 403 with a Cloudflare challenge, the TLS handshake is working again and you have moved past the certificate problem. And if your error text contains any of SEC_E_UNTRUSTED_ROOT, schannel, certificate, SSL, TLS, or unable to get local issuer certificate, treat it as a trust-chain problem before you suspect plan limits or quotas. The reverse is also true: an active subscription does not protect you from this, which is why "I pay for Plus, so it must be permissions" is the wrong first move.

A client that ignores your system proxy. Desktop and CLI clients frequently do not pick up system-wide proxy settings the way a browser does, so requests partly go through and partly do not, which is exactly the shape of Reconnecting 1/5 followed by a dead stream. The targeted fix is to tell Codex directly, in its own config directory:

C:\Users\<you>\.codex\.env
HTTP_PROXY="http://127.0.0.1:<your-local-proxy-port>"
HTTPS_PROXY="http://127.0.0.1:<your-local-proxy-port>"
NO_PROXY="localhost,127.0.0.1,::1"

NO_PROXY matters more than it looks. Without it, requests to your own local services get sent through the proxy too.

Two traps here. Windows hides known file extensions, so the file you think is .env is very often .env.txt, and Codex will not read it. And if the local proxy is not actually running, this change makes things *worse*, because you have now pointed Codex at a port with nothing behind it. Verify before and after:

Test-NetConnection -ComputerName 127.0.0.1 -Port <your-local-proxy-port>

TcpTestSucceeded : True is the check. This is also why the app-level .env is worth trying before a system-wide TUN mode: it is narrower, it is easier to undo by deleting one file, and it tells you something either way.

The order to try them in

  1. Read the URL in the error. If it is 127.0.0.1 or a relay, it is a config problem, not a Codex problem.
  2. Confirm the process is running and the port is listening. Then confirm the port speaks /v1/responses.
  3. Check base_url character by character. One slash.
  4. If the error mentions TLS, certificates, or schannel, refresh the trust store.
  5. If sign-in spins, check the local port your editor forwarded and what the callback URL expects.
  6. If the connection drops only on long responses, give the client an explicit proxy and check NO_PROXY.
  7. Only then start deleting credentials and clearing context. Those are the last two resets, not the first two.

Compare the four resets

The table below is what the page's download entry serves as a file, and the same content prints cleanly on its own.

Context resetConfig resetAuth resetTransport reset
Trigger symptommodel forgets, context ceiling reachederror URL points at 127.0.0.1 or a relaysign-in spins or failsstream dies mid-answer
Command or setting/compact, /new, /clearedit ~/.codex/config.tomlcodex logout then codex loginbase_url, root certificates, .env
What it clearsconversation historythe stale provider routeauth.json credentialsnothing
What it keepsfiles, config, loginlogin, historyconfig.tomlall of the above
Verify with/status token countnetstat -ano | findstr <port>codex login statuscurl -I, Test-NetConnection
Reversibleyesyes, restore the blockyes, log back inyes, delete .env
Cost of picking wronglose recoverable workerror persists unchangedunnecessary re-loginnothing, but wastes time

Download this comparison

Header plus four rows.

Official release records, by date

Every row below was read off an OpenAI or openai/codex page, and every URL in the source column resolves to that exact entry. Nothing here is second-hand.

DateAnnounced byNumberOfficial source
2026-05-08openai/codex releaseCodex CLI 0.130.0github.com/openai/codex/releases/tag/rust-v0.130.0
2026-05-28openai/codex releaseCodex CLI 0.135.0github.com/openai/codex/releases/tag/rust-v0.135.0
2026-06-11Codex changelogChatGPT desktop 26.609developers.openai.com/codex/changelog#codex-2026-06-11-app
2026-06-22openai/codex releaseCodex CLI 0.142.0github.com/openai/codex/releases/tag/rust-v0.142.0
2026-07-09Codex changelogChatGPT desktop 26.707developers.openai.com/codex/changelog#codex-2026-07-09-app
2026-07-30Codex changelogChatGPT desktop 26.727developers.openai.com/codex/changelog#codex-2026-07-30-app
2026-09-04openai/codex releaseCodex CLI 0.153.4github.com/openai/codex/releases/tag/rust-v0.153.4
2026-09-09openai/codex releaseCodex CLI 0.154.0github.com/openai/codex/releases/tag/rust-v0.154.0
2026-09-11Codex changelogChatGPT desktop 26.908developers.openai.com/codex/changelog#codex-2026-09-11-app
2026-09-17openai/codex releaseCodex CLI 0.155.0github.com/openai/codex/releases/tag/rust-v0.155.0

A note on how the desktop build numbers relate to the dates, because the two do not match and that is not an error. The build number encodes the build date, and the changelog entry is published two to three days later. 26.609 was built on 06-09 and the entry is dated 06-11. 26.707 was built on 07-07, entry 07-09. 26.727 was built on 07-27, entry 07-30. 26.908 was built on 09-08, entry 09-11. The lag is consistent across all four, which is itself the check.

One of these rows is worth reading in full rather than just listing. The 2026-06-11 entry is where rate-limit reset banking first appears for Plus and Pro users, described as one free reset at launch plus referral invitations for earning more during the promotion. That is the first-party statement of what a banked reset actually is, and it is the reason "reset" means two completely different things depending on whether you are talking about your conversation or your quota.

Where this leaves you

Four resets, four places to look, one keyword. The reason codex reset is such a frustrating search term is that the answer people actually need is usually not a reset at all. It is a one-character fix in a config file, a port number, or a certificate store. Start by reading the URL in the error message. It tells you which of the four you are in.

Download the whole table

30 reset records, newest first - date, what was reset, who announced it, scope and source URL.

Download CSV

Codex reset history

On a narrow screen, swipe the table sideways to see every column.

Date What was reset Announced by Scope Source
2026-09-12 Full usage-limit reset ("Reset all propagated.") Tibo (@thsottiaux) on X Not stated in the post x.com/thsottiaux/status/2098685367058612394
2026-09-07 Global reset applied directly to eligible usage limits (not banked) OpenAI Help Center Plus, Pro and Business users help.openai.com/en/articles/20001498-how-banked-codex-resets-work
2026-09-05 Banked reset for users who did not yet have Astra access Tibo (@thsottiaux) on X Some Plus and Business users; new accounts created by 8pm PT also eligible x.com/thsottiaux/status/2095979536043401428
2026-09-04 Banked reset granted to eligible new and existing accounts OpenAI Help Center New Plus, Pro and Business accounts created before 8 PM PT; existing Plus, Pro and Business users in good standing help.openai.com/en/articles/20001498-how-banked-codex-resets-work
2026-09-03 Banked reset granted to eligible new and existing accounts OpenAI Help Center New Plus, Pro and Business accounts created before 10 PM PT; existing Plus, Pro and Business users in good standing help.openai.com/en/articles/20001498-how-banked-codex-resets-work
2026-08-31 Usage reset to mark 25M active users Tibo (@thsottiaux) on X All paid subscriptions for ChatGPT Work and Codex x.com/thsottiaux/status/2094251180121854309
2026-08-30 Usage reset alongside efficiency fixes (usage reported to last 10-50% further) Tibo (@thsottiaux) on X All paid users of Codex and ChatGPT Work x.com/thsottiaux/status/2093801758665715784
2026-08-27 Usage reset ("brand new usage") Tibo (@thsottiaux) on X All ChatGPT Work and Codex users x.com/thsottiaux/status/2093014447833116908
2026-08-22 Banked reset Tibo (@thsottiaux) on X All paid users of ChatGPT Work and Codex x.com/thsottiaux/status/2090947196107764189
2026-08-13 Reset marking 15M active users Tibo (@thsottiaux) on X Not stated in the post (the post says "everyone") x.com/thsottiaux/status/2087706104814023111
2026-08-11 Usage limits reset Tibo (@thsottiaux) on X All paid ChatGPT Work and Codex users x.com/thsottiaux/status/2086972802457063486
2026-08-08 Usage limits reset (GPT-5.6 Sol celebration) Tibo (@thsottiaux) on X All paid users of ChatGPT Work and Codex x.com/thsottiaux/status/2086188036493344823
2026-08-01 Usage limits reset Tibo (@thsottiaux) on X Codex and ChatGPT Work x.com/thsottiaux/status/2083395449814229287
2026-07-29 Usage limits reset; Sol efficiency improved (usage reported to last ~18% longer) Tibo (@thsottiaux) on X All ChatGPT Work and Codex users x.com/thsottiaux/status/2082317452755751098
2026-07-28 Usage limits reset Tibo (@thsottiaux) on X All paid users of Codex and ChatGPT Work x.com/thsottiaux/status/2081940052154933696
2026-07-26 Usage limits reset after an outage Tibo (@thsottiaux) on X All Codex and ChatGPT Work users x.com/thsottiaux/status/2081096447718723984
2026-07-22 Usage reset marking 10M active users Tibo (@thsottiaux) on X Paid users of Codex and ChatGPT Work x.com/thsottiaux/status/2079609157934886975
2026-07-18 Usage limits reset Tibo (@thsottiaux) on X All paid users of Codex and ChatGPT Work x.com/thsottiaux/status/2078320950488297917
2026-07-16 Usage limits reset (9M active users) Tibo (@thsottiaux) on X Codex and ChatGPT Work users x.com/thsottiaux/status/2077607697487188198
2026-07-15 Usage limits reset (8M active users) Tibo (@thsottiaux) on X All Codex and ChatGPT Work users x.com/thsottiaux/status/2077114635308986427
2026-07-13 Banked reset added to every account (7M active users) Tibo (@thsottiaux) on X Everyone on ChatGPT Work and Codex x.com/thsottiaux/status/2076735790567338203
2026-07-13 Banked reset added for 500k users; banked resets became usable from web and mobile Tibo (@thsottiaux) on X 500k users of ChatGPT Work and Codex x.com/thsottiaux/status/2076418567143408112
2026-07-11 Usage limit reset Tibo (@thsottiaux) on X All ChatGPT Work and Codex users x.com/thsottiaux/status/2075820987833274448
2026-07-09 Full usage-limit reset Tibo (@thsottiaux) on X ChatGPT Work and Codex x.com/thsottiaux/status/2075330198887940337
2026-06-30 Full reset plus one extra reset credited to the bank Tibo (@thsottiaux) on X Codex x.com/thsottiaux/status/2071740419030053227
2026-06-29 Hard reset of Codex usage limits Tibo (@thsottiaux) on X Codex x.com/thsottiaux/status/2071381664853319742
2026-06-27 Usage reset "on the house" Tibo (@thsottiaux) on X All Codex users x.com/thsottiaux/status/2070653282440405046
2026-06-17 Double reset: a full reset plus one banked reset Tibo (@thsottiaux) on X Not stated in the post x.com/thsottiaux/status/2067399435009622521
2026-06-04 Usage limits reset after three reliability incidents Tibo (@thsottiaux) on X Codex across all paid plans x.com/thsottiaux/status/2062329981548802523
2026-05-31 Usage limits reset to 100% weekly and 100% hourly Tibo (@thsottiaux) on X All paid ChatGPT subscriptions x.com/thsottiaux/status/2061106703446450392

Rows are added only when a source has been opened and read. Anything we cannot verify is left out rather than guessed.

Who these resets apply to

The scope column above is taken from the announcement itself, so it is worth reading row by row. A few patterns hold across the records we verified:

How the status is worked out

There is no official feed, so the status line is built from a fixed set of sources we open by hand:

  1. The @thsottiaux account on X, which is where individual resets are announced.
  2. The OpenAI Help Center article on banked Codex resets, which carries the eligibility and expiration rules.

"Latest reset" is the most recent announcement we have opened and read. "Next reset" is reported as cannot be given because OpenAI does not publish a schedule; the Help Center states that future resets are not guaranteed. We do not estimate a time and we do not treat past intervals as a prediction.

Questions

What is the Codex reset history?

It is the dated record of every announced Codex usage-limit reset, with the announcement and its scope. The table above lists 30 records, newest first, each with a link to the original announcement.

How often does Codex reset?

There is no fixed cadence. Announcements are irregular, and OpenAI does not publish a schedule - the Help Center says future resets are not guaranteed. Count the dated rows above rather than assuming a weekly or monthly rhythm.

How do I get free Codex credit resets?

Free resets are granted by OpenAI, not claimed from a page. When one is granted it appears in your own account: check the usage summary in the Codex desktop app, CLI or web. The Help Center describes how to find and apply a banked reset.

What is a banked reset, and how is it different from a normal reset?

A banked reset is saved to your account and you apply it yourself. A global or automatic reset is applied to eligible usage limits directly and does not create a saved reset. The Help Center covers both, and the scope column above marks which announcements were banked.

Can I download this list?

Yes - use the Download CSV button above. The file has one row per reset with the date, what was reset, who announced it, the scope and the source URL.