macOS app 26.803 refocus reloads Chat sidebar and triggers repeated conversation 429s

Open 💬 2 comments Opened Aug 8, 2026 by SZoloth

What version of the Codex App are you using (From “About Codex” dialog)?

26.803.41515 (build 6321)

What subscription do you have?

ChatGPT Pro

What platform is your computer?

Darwin 25.5.0 arm64 arm
macOS 26.5.2 (25F84)

What issue are you seeing?

In the unified ChatGPT/Codex desktop app on macOS, the Chat conversation sidebar visibly reloads every time the app regains focus after switching from another application.

The sidebar briefly returns to a loading state instead of keeping the existing conversation list rendered. Repeated app switching makes the interface distracting and can leave the list waiting on retries.

A reproduced occurrence at 2026-08-08T00:22:04Z showed the focused primary renderer initiating four separate GET /conversations requests for overlapping sidebar variants. All four returned HTTP 429 with {"detail":"Too many requests"}, followed by retries at approximately one, three, seven, and eight seconds.

The request volume increased sharply after the app updated:

  • Build 6321: 567 logged /conversations HTTP 429 responses over approximately 2 hours 42 minutes.
  • Previous build 6234: 74 logged /conversations HTTP 429 responses over approximately 21 hours 45 minutes.

The requests came from the focused primary renderer. I did not find evidence of an extra renderer window causing the duplication.

What steps can reproduce the bug?

  1. Open the ChatGPT/Codex desktop app and select Chat so the conversation sidebar is visible.
  2. Switch to another macOS application.
  3. Switch back to ChatGPT/Codex.
  4. Observe the conversation sidebar reload.
  5. Repeat the app switch several times. The sidebar reload occurs on each refocus, while local app logs show repeated overlapping /conversations fetches and 429 retries.

What is the expected behavior?

Refocusing the application should keep the current sidebar list rendered. Any freshness check should be deduplicated, run without resetting the visible loading state, and respect rate-limit backoff.

Additional information

  • The regression began after the automatic update from 26.730.61639 (build 6234) to 26.803.41515 (build 6321) on August 7, 2026.
  • The current app uses Chromium 151.0.7922.76; the previous build used 151.0.7922.71.
  • No local sidebar or focus-refresh setting was found.
  • Clearing local state has not been attempted because the logs point to focus-triggered request duplication and clearing state could destroy useful diagnostic evidence.
  • Sanitized log excerpts can be provided privately to maintainers.

View original on GitHub ↗

2 Comments

slhaf · 16 days ago

Confirmed on the official Linux desktop client as well. I think there is an additional request amplifier beyond the refocus behavior described in this issue.

Environment:

  • Linux x86_64
  • Hyprland
  • Chromium 151.0.7922.76
  • Chat sidebar / Recents visible

I initially reproduced the same account-level conversation-history rate limiting described here: the Desktop app starts receiving HTTP 429s from /backend-api/conversations, and shortly afterwards the web ChatGPT UI for the same account also temporarily loses access to conversation history.

While investigating, I locally disabled both:

  1. refetchOnWindowFocus for the normal and TPP conversation queries
  2. automatic retry of HTTP 429

This removed the focus-triggered requests and the post-429 retry amplification, but the Desktop app could still hit 429 without any manual sidebar pagination.

The remaining trigger appears to be the Recents sidebar's automatic infinite-scroll pagination.

With a sufficiently tall sidebar viewport, I captured an IntersectionObserver becoming visible and immediately triggering successive conversation pages:

IntersectionObserver intersecting=true
+12 ms -> /conversations ... limit=20&offset=40 200

IntersectionObserver intersecting=true
+2 ms -> /conversations ... limit=20&offset=60 200

IntersectionObserver intersecting=true
+2 ms -> /conversations ... limit=20&offset=80 200

IntersectionObserver intersecting=true
+3 ms -> /conversations ... limit=20&offset=100 200

No manual scrolling or pagination was performed.

Window height matters: with a short tiled window, the sentinel is quickly pushed outside the viewport and pagination stops. With a taller window, the sentinel can remain/re-enter the viewport and the client keeps loading additional pages automatically.

More importantly, after several pages had been loaded, I captured a later refetch/remount re-requesting the whole loaded page set:

t+0.00s offset=0 200
t+0.86s offset=20 200
t+1.79s offset=40 200
TPP limit=100 offset=0 200
t+3.01s offset=60 200
t+4.33s offset=80 200
t+5.74s offset=100 429

So one sidebar refresh can turn into 6 normal conversation-list requests plus the TPP request once the infinite query has accumulated enough pages.

Looking at the shipped frontend bundle, the Recents list explicitly uses an infiniteScroll pagination mode backed by IntersectionObserver. The generic list component already also supports a non-automatic "Show more" button mode.

This suggests the request amplification chain may be:

tall/under-filled sidebar viewport
-> automatic infinite-scroll pagination
-> more pages retained in the infinite query
-> later remount/refetch reloads all retained pages
-> conversation endpoint reaches 429
-> 429 retry behavior further amplifies the rate limit

So fixing only the refocus reload may not completely eliminate the problem.

Potential mitigations might be:

  • avoid automatic infinite-scroll pagination for Chat conversation history (use the existing explicit "Show more" behavior, or otherwise bound automatic pagination);
  • avoid refetching every previously loaded page on sidebar remount;
  • do not immediately retry 429 responses from the conversation-history endpoint.

I had also encountered what appeared to be the same conversation-history rate limit previously with a repackaged macOS Desktop build, although I did not have detailed tracing from that occurrence. The Linux reproduction above is the one I traced in detail.

I can provide sanitized request logs / timestamps if they would be useful.

joeaki1983 · 9 days ago

I also encountered this problem; switching the ChatGPT client to codex mode resolves it. This problem only occurs in ChatGPT mode.