"They were working just like yesterday! What happened?" — that is how it starts, on the OpenAI community forum, when a ChatGPT extension stops responding for people who had no idea anything was about to change. The follow-up, from the same thread: "I'm having the EXACT SAME problem. What's going on with this OpenAI."
Both threads were opened the same day, by people who had installed the same extension, done nothing wrong, and found the toolbar simply gone. The short version of why your chatgpt extension stopped working: the extension was talking to a page that no longer exists.
The frustrating part of a broken extension is that nothing happens. No dialog, no red badge, no error toast. You type into the composer, press send, and the prompt you just wrote is simply not there — the symptom reported on a WebChatGPT issue thread: "No matter what I type, it submits a blank prompt." Another user described it as "When i typeing all the info and press enter it will show nothing. However i remove this WebchatGPT the chatGPT will be working as normal."
That last quote is the whole diagnosis in one sentence. Removing the extension restores normal behaviour, which means the extension is not broken in the way people assume. It is running perfectly. It is just looking for something the page no longer contains.
People use the phrase for at least five different symptoms, and each points to a different root cause.
The most common variant. The extension injected its own interface into the page and that interface has vanished. A developer filing this on GitHub put it plainly: "With recent ChatGPT UI update, the toolbar and injected '/' disappears after first use." The same reporter noted the extension "will show up when first loading Chatgpt website, but after first use, the toolbar and script are no longer accessible." That first-use-then-vanish pattern is diagnostic: the injection worked on a cold load, then a re-render wiped it out.
Here the extension is reaching the wrong element. A report against a multi-model AI extension describes exactly this after a Gemini interface change: "clicking the send button (or triggering the send action) does not submit the prompt. Instead, it triggers and opens the '+' (more options / attachments) menu located to the left." The extension is not failing. It is submitting the button that used to be the send button.
Sometimes the extension still works and the page underneath it does not. One user reported "The whole chat window goes off-screen to the left, hidden behind the list of chats. Only the prompt box is left on the screen." A changed flex layout can push the whole interface out of view.
A fifth variant is extension-on-extension conflict: several AI extensions injecting into the same composer overwrite each other. The WebChatGPT maintainers documented this in their FAQ, advising users to disable other ChatGPT extensions if the toolbar fails to appear. The AIPRM forum is blunter: "Other ChatGPT browser extensions can cause conflicts with AIPRM. We recommend to uninstall them all."
Underneath those symptoms sit four technical failures. Knowing which one you have decides whether you can fix it yourself or are waiting on someone else's release. The mechanics come from Chrome's own documentation: how content scripts interact with a page, how the background service worker is torn down, and what changed in Manifest V3.
This is the dominant cause. Chrome's extension documentation is explicit that content scripts read and change pages through the standard DOM, running in an isolated world where they reach page markup by matching selectors. A maintainer of another ChatGPT extension described the identical problem plainly: "OpenAI frequently updates the CSS classes and DOM structure of chatgpt.com."
When a framework like React rebuilds a component tree, class names are frequently generated or hashed, and a class that was composer-container last month is css-1x2y3z today. An extension whose selector was written against yesterday's markup finds nothing. It does not throw. It simply continues, silently, against an empty result set. The same applies one level down: when a composer swaps between a plain textarea and a rich-text contenteditable editor, writing into a field the framework does not know about produces no submission at all.
This is not specific to AI tools. A widely-shared Hacker News observation makes the general case: "Even small tweaks to the Gmail UI often change the DOM in very unpredictable ways. When they released the new compose feature, pretty much every single Gmail Chrome extension broke." ChatGPT is not unusually hostile to extensions. It is just unusually frequently redesigned.
This failure has nothing to do with ChatGPT, and it surprises people who assume their extension is fine. In Manifest V3 the old persistent background page was replaced by a service worker, and Chrome's documentation sets out the lifetime rules precisely: Chrome terminates an extension service worker after 30 seconds of inactivity, when a single request takes longer than 5 minutes, or when a fetch() response takes more than 30 seconds. Global variables are lost on shutdown, so state must be persisted in chrome.storage.
That matters more than it sounds, because Chrome's migration guide confirms Manifest V3 removes support for remotely hosted code. When ChatGPT changes its markup, an extension cannot ship a patched script from a server and apply it immediately — the fix must be packaged, submitted to the store, reviewed, and published. That pipeline is where the waiting happens.
Content scripts only run where the declared match patterns and host permissions cover the URL. The oldest example in the archive is almost comically simple: "The extension not yet work because ChatGPT changed the DNS from 'https://chat.openai.com/' to 'https://chatgpt.com/'." The domain moved and the extension was gone with it.
Route-level changes do the same at smaller scale. A user on the OpenAI forum traced their break to a path change: "you guys changed the URL from https://chat.openai.com/chat to https://chat.openai.com/c". The isolated-world design adds a related trap: because the web page, content scripts and other extensions cannot access each other's JavaScript variables, an extension that read the app's in-memory state rather than the DOM gets nothing once the app restructures it.
The third possibility is that the break is real, the fix exists, and you are waiting. The WebChatGPT repository illustrates it: roughly 6,400 stars, and as of this writing its last push to the default branch was in August 2024, with around 96 open issues. Users reached the end of the road: "It looks like the project is no longer maintained. It's probably best to delete it. That's what I just did. Such a shame."
Even actively maintained extensions hit a dead period. When the ChatGPT toolbar broke for one project, the maintainer wrote: "Already submitted a patched versions to all the web stores, it'll take some time before they're reviewed and become available. In the meantime you can install v3.2.7 manually."
Every AI chat app has this problem — Claude and Gemini break extensions the same way — and it is the combination of constant re-rendering and zero warning that makes them a harsh environment. A static marketing page might change its DOM once a year; a chat app re-renders its composer on every keystroke and ships redesigns on a schedule set by product and design, not by extension developers. There is no deprecation window, no change log aimed at third parties, and no versioned contract for the composer markup. A maintainer of another ChatGPT extension put it plainly: "the main limit is that change its DOM frequently. Those changes can break formatting until the extension update."
There is no deprecation window, no change log aimed at third parties, and no versioned contract for the composer markup.
Work through these in order. The first three need only a browser.
chrome://extensions and use the site normally. If the composer is broken with no extensions running, no extension fix will help.Reinstalling the same build. Clearing the cache. Rewriting your prompts. Switching browsers. None touch the cause: a mismatch between selectors and markup, or a patch waiting for review.
Checking the releases page for a version published after the break. Installing a patched build directly rather than waiting for the store. Narrowing to one extension to rule out conflicts.
A tool that silently does nothing is a tool you will spend an evening debugging. A tool that says “I could not find the composer on this page” tells you the truth immediately.
Open the repository. A project with commits in the last few months and a maintainer answering issues about broken selectors will survive the next redesign. A project with no commits in a year and a tracker full of “it stopped working” is one you will be leaving within a month. Watch the review pipeline: your recovery time is store review time.
Ask how the extension finds the composer. Selectors built on aria-label, role and stable data-* attributes survive redesigns; hashed CSS module class names break on the next deploy.
The most expensive failure mode is not a broken toolbar. It is a tool holding the only copy of something you cannot reconstruct. Prompt Helper Gemini is built so the part you care about does not live inside a fragile piece of injected DOM: your original text is never overwritten, every rewrite is reversible, and you can see what changed before it reaches the model. It runs across ChatGPT, Claude, Gemini, Grok and Perplexity, and does not ask you to sign up before showing you whether it works.
Try it free — no account requiredIf your chatgpt extension stopped working, the honest summary is this: neither the extension nor the page is broken. A frontend change removed the thing the extension was looking for, and the script responded the only way it can when a query returns nothing — by doing nothing. The four failure modes are selector rot, a terminated background service worker, a content script never injected because the URL moved, and a patch sitting in a review queue or an abandoned repository.
Two of those four you can fix in five minutes: rule out an extension conflict by enabling extensions one at a time, and check the releases page for a version published after the break. The other two are not yours to fix.
The durable lesson is how you buy this category. Choose tools that tell you when they fail, that are actively shipped, that attach through stable anchors rather than generated class names, that cover every model you use, and that never make your own words impossible to retrieve.
More practical guides live in the promptgenerator.fyi blog and the free prompt library.
Because ChatGPT shipped a frontend change, not because your browser broke. Extensions read the page through selectors and injected markup, so a renamed class, a moved composer, or a new route breaks the target silently. The tell is that other extensions for the same site fail at the same moment.
First confirm the scope: open the site in a private window with extensions disabled, then re-enable one extension at a time. If the toolbar returns, the break was an extension conflict. If it stays gone, check the releases page for a patched version and install it manually.
Regularly, and the vendor cannot prevent it. ChatGPT is a single-page app that re-renders constantly and ships redesigns on its own schedule, with no deprecation window or change log aimed at extension authors. Chrome's documentation confirms content scripts are coupled to page markup through the standard DOM.
A broken selector is not an error, it is a null result. The content script runs, queries the page, finds nothing, and exits quietly. That is why the commonest complaint reads like 'it does nothing' rather than a crash. An extension that reports a visible failure state is telling you something useful.
Look at the scope. If plain ChatGPT works and only one extension is inert, the extension is at fault. If every extension for that site fails at once, the site changed underneath all of them. If the page is broken with extensions off, ChatGPT is the problem. These cases look identical but need different responses.
Rarely, and the effort is usually wasted. Reinstalling restores the same build that already failed, and a cache clear cannot restore a selector that no longer matches the page. It helps in one case: the extension is disabled, crashed, or blocked by a conflict. Otherwise the fix comes from the maintainer.