After you press Enter
The next question starts with reasoning off, even when the last answer used it.
Free userscript for ChatGPT v1.0.0
A small userscript that keeps ChatGPT reasoning enabled. It restores the toggle after messages, chat changes, and reloads, then resends your prompt when needed so it goes through with reasoning on.
Reasoning gives ChatGPT more time to work through a problem, and the switch returns to its default position after every message, every chat change, and every reload. The interface still looks ready, so the reset is easy to miss until an answer arrives without the depth you asked for.
The next question starts with reasoning off, even when the last answer used it.
A new conversation inherits the default, not the choice you made a minute ago.
The page comes back with the setting already gone and no hint that it changed.
resend delay when the toggle has to change first
watchdog interval that catches a silent reset
interface languages the button is recognized in
network requests made from the page
The script has one job, and it does that job in the four places where ChatGPT can lose the setting. There is no panel to configure and no habit to build, because the work happens between the moment the interface changes and the moment your prompt reaches OpenAI.
ChatGPT runs as a single-page application, so a new conversation can appear without a page load. A MutationObserver catches those changes, while a check every 1.2 seconds covers the updates that arrive without a mutation the script can hear.
The button is identified by its pressed state, the brain icon, and the local word for reasoning across more than twenty interface languages. When the control hides behind the plus menu instead of the composer, the script opens that menu and looks there.
Pressing Enter with reasoning off usually costs you the prompt. The script stops that submission, flips the switch, and sends the same text 180 milliseconds later, so the message never leaves without the mode it needs.
The manifest asks for no permissions and makes no network calls. The script reads only the interface elements it needs, never the text of your conversations, and it stores nothing outside the page where it is running.
You need one userscript manager and one visit to GreasyFork. The script updates itself after that, so the version you install today will not be the version you keep forever.
Tampermonkey and Violentmonkey both work on Chrome, Edge, Firefox, and Safari. Install one from its official store page and keep it enabled while you browse.
Open the GreasyFork listing and press Install. Your manager shows a confirmation screen with the permissions, and this script asks for none beyond running on chatgpt.com.
Reload the ChatGPT tab, then run the command below in the browser console. The answer is true when reasoning is on, and false when the interface has no toggle for the script to read.
› __autoReasoning.isOn()
true
The script also exposes __autoReasoning.now() for a manual check.
Compatibility
The script is small on purpose, and that keeps it close to the parts of the page that change least. When a layout moves the reasoning control somewhere new, the fallback path is there to find it.
chatgpt.com and chat.openai.com@grant none.@updateURL.Privacy
No network requests leave the tab, no conversation text is collected, and nothing is written to storage. The script looks for a single control in the composer, flips it when the mode is off, and then gets out of the way. Prompts, files, and chat history stay between you and OpenAI.
Questions
The short answer is that the script only touches the toggle. The long answers are below, and the source is open if you want to check them line by line.
Read the source on GitHubThe script only touches the reasoning toggle in the message composer. When the mode is off, it clicks the control to turn it on. If you press Enter before that happens, it cancels the send and replays it after the switch has changed, so the prompt reaches ChatGPT with reasoning enabled.
ChatGPT returns the toggle to its default after a message is sent, after you move to a different conversation, and after the page reloads. That behavior belongs to the interface, so a userscript cannot prevent the reset at the source. It can only notice the new state and restore your preference before the next message is sent.
No. The only message the script ever replays is the text already sitting in the composer when you pressed Enter. It does not compose prompts, open chats, or run while you are typing.
The script reads a small set of interface attributes on buttons and menu items, such as
aria-pressed and visible labels. It does not read message text, attachments, or the
content of your chats, and it makes no network requests of its own.
The script was tested on ChatGPT GO. On other plans it works whenever the reasoning control appears in the composer or the plus menu. When a model does not expose that control, the script waits and does nothing, which is why unsupported models do not produce errors or stray clicks.
Open chatgpt.com, then run __autoReasoning.isOn() in the browser console. The command
returns true when the toggle is on. You can also run __autoReasoning.now() to trigger a
manual check without waiting for the next page event.
Any userscript manager that supports the metadata block can run it. Tampermonkey and Violentmonkey cover Chrome, Edge, Firefox, and Safari, and the script itself uses standard DOM APIs. The project is tested on Chromium with ChatGPT GO.
Some layouts keep the reasoning control inside the attachment menu instead of the composer. When the toggle is not visible, the script opens that menu, looks for the reasoning row, and closes the menu again. The fallback runs at most once every thirty seconds, so an unsupported interface is not clicked in a loop.
The manifest points at GreasyFork with @updateURL, and your userscript manager checks
that address on its own schedule. When a new version is published, the manager offers the update
or installs it automatically, depending on your settings.
No. ChatGPT Auto Reasoning is an independent open source project under the MIT license, and ChatGPT is a trademark of OpenAI. The script interacts only with elements that are already part of the ChatGPT interface.