Model or dataset
xcanwin/KeepChatGPT avatar
xcanwin/KeepChatGPT

KeepChatGPT: a userscript that patches ChatGPT's network errors in the browser

这是一款提高ChatGPT的数据安全能力和效率的插件。并且免费共享大量创新功能,如:自动刷新、保持活跃、数据安全、取消审计、克隆对话、言无不尽、净化页面、展示大屏、拦截跟踪、日新月异、明察秋毫等。让我们的AI体验无比安全、顺畅、丝滑、高效、简洁。

14,899 stars739 forksJavaScriptGPL-2.0

At a glance

What is it?
KeepChatGPT is a Tampermonkey userscript that keeps a ChatGPT tab active, suppresses the audit warning, and cleans up the page. It is a client-side patch, not a proxy, and everything it changes lives in your browser.
Who is it for?
Adopt KeepChatGPT if you already run Tampermonkey and your main complaint is ChatGPT's NetworkError loop, the audit banner, or a cluttered interface; the install is one userscript and the README documents every feature it adds. Skip it if you need a server-side fix, if you cannot install browser extensions, or if you are on a locked-down managed machine where userscript managers are blocked.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 71 days ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The NetworkError loop KeepChatGPT was built to break

ChatGPT's web client fails in a specific, repetitive way. A request stalls, the interface shows NetworkError when attempting to fetch resource, and the only recovery the user has is to refresh the page, reopen the conversation, paste the prompt again and resend it. The README lays this out as a thirteen-step comparison: without the plugin, steps three through twelve are error, retry, error, copy, refresh, wait, reopen, paste, resend, wait; with the plugin, the sequence is send, wait, result. The project's claim is that it removes ten of those steps.

The audience is narrow and specific. This is for people who use ChatGPT in a browser tab, who have Tampermonkey or an equivalent userscript manager available, and who are annoyed enough by the refresh-and-resend cycle to install a third-party script. It is not for API users, not for people building on the OpenAI SDK, and not for anyone who needs a guarantee about how ChatGPT's backend behaves. The plugin changes what your browser does; it does not change what the server does.

What the userscript actually hooks in the page

KeepChatGPT ships as a single userscript, KeepChatGPT.user.js, with a development loader alongside it called KeepChatGPT.dev.user.js. There is no server component, no proxy, and no extension build in the repository. The top-level layout is the script, the dev loader, a tools directory, a tests directory, assets, docs, and a package.json whose only runtime scripts are dev and test.

The mechanism is DOM and network interception inside the page. The README's own verification checklist asks whether the #kcg element appears, whether the settings menu opens, and whether the console shows errors, which tells you the script injects a control element into ChatGPT's interface and drives its features from a settings menu. The feature list is long: auto refresh, keep active, data security, cancel audit, clone conversation, unbounded replies, page cleanup, large screen display, tracking interception, and two features the README names in Chinese as 日新月异 and 明察秋毫. Each has its own anchor in the README, so the documentation treats them as independent toggles rather than one monolithic behaviour.

The development setup confirms the injection model. The dev loader pulls the latest script from a local server on port 8888, the server listens only on 127.0.0.1, and the README warns that the production script must be disabled in Tampermonkey first so the two do not inject twice. That is a normal userscript workflow, and it also tells you the whole system assumes a page you control in a browser you control.

Installing KeepChatGPT and checking that it loaded

The README lists exactly one official channel: the raw script from the GitHub repository. It explicitly warns that copies on the Chrome Web Store and the Microsoft Edge add-ons store are not uploaded by the author and that at least one clone charges users. Install from the raw URL only.

On desktop, install Tampermonkey first, then the script, then open chatgpt.com. The old chat.openai.com domain is listed as compatible. The README's install table points to the raw script URL:

text
https://raw.githubusercontent.com/xcanwin/KeepChatGPT/main/KeepChatGPT.user.js

Opening that URL in a browser with Tampermonkey installed should trigger the userscript install prompt. After confirming, load chatgpt.com and check that the #kcg element is present in the page. The README's own verification prompt asks for exactly that, plus whether the settings menu opens and whether the console is clean.

If you want to modify the script rather than just run it, the repository has a dev mode. The README gives these steps: temporarily disable the installed production KeepChatGPT.user.js in Tampermonkey so it does not inject twice, install dependencies, start dev mode, and install the dev loader in Tampermonkey. The loader fetches from the local server, so editing KeepChatGPT.user.js and refreshing the ChatGPT tab is the whole edit cycle.

bash
npm install
npm run dev

The dev script runs the local server and Jest in watch mode together, so the test suite reruns as you edit. The test environment is jsdom and the test files live under tests/.

Mobile install paths the README documents

Mobile is not an afterthought here, but each platform takes a different route. On HarmonyOS the README says to use Firefox, install it from the Huawei App Gallery or Mozilla's site, then open the Firefox menu, go to add-ons, open the add-on manager, and tap the plus next to Tampermonkey. After that the install channel is the same raw script URL.

On iOS the browser is Safari and the userscript manager is Stay, installed from the App Store, with usage documented in the Stay repository. The script install and the chatgpt.com URL are identical to desktop.

What the README does not document is Android as a separate path. The feature list groups HarmonyOS and Android together under the same anchor, so the Firefox plus Tampermonkey route is presumably the intended one, but the step-by-step section is written for HarmonyOS only. If you are on Android and not on HarmonyOS, you are extrapolating.

Where KeepChatGPT cannot help you

The README is honest about one failure mode and vague about another. Under the heading about widespread network errors, it attributes the cause to compute pressure, high usage, and Cloudflare risk controls and false positives. A userscript running in your tab cannot change any of those. If ChatGPT's edge is rejecting your requests, KeepChatGPT's auto refresh and keep-alive behaviour will not make the rejection stop.

The README's own fallback advice for persistent errors is to change networks or to adjust the keep interval. That is the admission: the plugin's lever is timing and retry behaviour, not access. If your problem is that a corporate proxy blocks the connection, or that your region is rate-limited, this project is the wrong tool.

The second gap is the audit-related feature. The README lists cancel audit as a feature and shows the This content may violate our content policy warning as one of the errors it addresses. What it does not document is what happens to that warning server-side, or whether the message is still recorded. Anyone reading cancel audit as a guarantee about what OpenAI retains is reading more into the name than the README supports. The same caution applies to the data security feature, which the README names and anchors but does not explain in the text available here.

A third constraint is environmental. Everything depends on a userscript manager being installable and permitted. On a managed work laptop with extension policy locked down, there is no path.

KeepChatGPT versus running ChatGPT through a wrapper

The obvious alternative is a client that talks to the API instead of the web app: a self-hosted chat front end, or a desktop client that stores your own keys. The difference in approach is fundamental. A wrapper replaces ChatGPT's interface and talks to the API directly, so it never sees NetworkError from the web client, never sees the audit banner, and never needs to patch a DOM. In exchange you lose the web app's features, you manage your own API key and billing, and you give up the conversation history that lives in your OpenAI account.

KeepChatGPT takes the opposite bet. It keeps you inside the real ChatGPT web app and fixes the friction at the browser layer. That means you keep account history, model access and interface updates as OpenAI ships them, and you accept that any DOM change on OpenAI's side can break the script until it is updated. The last push to the repository was on 2026-07-20, which is recent enough that the project is still being touched, but a userscript that patches a third-party interface is structurally exposed to that interface changing underneath it.

If your priority is stability and you are comfortable with an API key, a wrapper is the calmer choice. If your priority is staying in the official web app with your existing account and history, KeepChatGPT is the only one of the two that does that.

Licence, maintenance and what an upgrade costs you

KeepChatGPT is GPL-2.0. For a userscript that most people install and run, that is unremarkable. If you fork it, redistribute it, or ship a modified version, GPL-2.0's copyleft terms apply to the derivative work, and the repository's LICENSE file is the authoritative text. This is not legal advice; if you plan to redistribute a modified build commercially, read the licence and get proper advice.

The maintenance picture is straightforward. The repository is not archived, and the last push was on 2026-07-20. There are no retrieved releases, so distribution is the raw script from main rather than tagged versions. That matters for upgrades: Tampermonkey can check the raw URL for updates, but because there is no release channel, an update is whatever landed on main most recently. You are tracking a branch, not a version.

The practical upgrade cost is low but non-zero. The script is one file, there is no build step required to use it, and the dev mode exists for people who want to modify it. The real cost is the opposite direction: when ChatGPT's interface changes and the script has not caught up, the failure appears as a broken control or a console error, and the fix is to wait for a push to main or to disable the script.

What the README leaves undocumented

Several features are named in the feature list and given their own anchors, but the text available here does not explain them. Clone conversation, unbounded replies, large screen display, tracking interception, and the two features rendered in Chinese as 日新月异 and 明察秋毫 are listed without mechanism. The README's anchor links point to sections further down the document, so the explanations exist in the full file, but a reader deciding whether to install should treat the feature list as a menu, not a specification.

The same applies to the keep interval. The README references an adjustment section and says the interval can be tuned, and it lists an over-aggressive interval as a cause of persistent errors, but it does not state a default value or a recommended range in the text here. If you install it and still see errors, the README's own advice is to change network or adjust that interval, which means the tuning knob is the first thing to find in the settings menu.

Editorial conclusion

Adopt KeepChatGPT if you already run Tampermonkey and your main complaint is ChatGPT's NetworkError loop, the audit banner, or a cluttered interface; the install is one userscript and the README documents every feature it adds. Skip it if you need a server-side fix, if you cannot install browser extensions, or if you are on a locked-down managed machine where userscript managers are blocked. Before relying on it, verify three things: that your Tampermonkey build loads the script from the raw GitHub URL, that the #kcg element appears on chatgpt.com, and that the keep interval is set to a value your network tolerates, since the README attributes persistent errors either to network conditions or to an interval that is too aggressive.

Frequently asked questions

Is ChatGPT safe to use?

The README lists data security and cancel audit as features and shows the content policy warning among the messages it addresses, but it does not document what happens to that data server-side. Treat those feature names as browser-side behaviour, not as a statement about what OpenAI retains.

What are the 5 things you shouldn't tell ChatGPT?

The README does not list categories of information to withhold from ChatGPT. Its data security and cancel audit features are described as browser-side behaviour, and the README does not document what happens to submitted content server-side.

What's the difference between GPT and ChatGPT?

KeepChatGPT is a userscript that runs on chatgpt.com, the ChatGPT web interface, and the README does not discuss GPT models separately. The distinction between the model and the chat product is outside what the repository documents.

Why pay $20 for ChatGPT?

The README does not discuss ChatGPT subscription pricing. It describes KeepChatGPT as a free plugin and warns that copies on the Chrome Web Store and Microsoft Edge add-ons store are not uploaded by the author, and that at least one clone asks users to pay.

Official sources

  1. Issues
  2. License: GPL-2.0
  3. README
  4. xcanwin/KeepChatGPT on GitHub
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/xcanwin-keepchatgpt.svg)](https://hysenlabs.com/projects/xcanwin-keepchatgpt)
Community notes

Community notes