How to disable the very annoying Ask ChatGPT?
OpenAI Developer Community
February 7, 2026
I tried the Tampermonkey script posted above, but it did not work. So I asked (yes, you guessed it) ChatGPT, and this one does work!
// ==UserScript==
// @name Hide “Ask ChatGPT” selection popup
//
http://tampermonkey.net/
// @version 2026-02-07.1
// @description Hides the “Ask ChatGPT” popup that appears when selecting text on chatgpt.com
//
You
// @match https://chatgpt.com/*
// @match https://chat.openai.com/*
// @run-at document-start
//
none
// ==/UserScript==
(function () {
‘use strict’;
// Try to hide the container that holds the “Ask ChatGPT” control.
function hideAskPopup(root = document) {
// Look for clickable elements that literally say “Ask ChatGPT”
const candidates = root.querySelectorAll(‘button, a, [role=“button”]’);
for (const el of candidates) {
const txt = (el.textContent || '').trim();
if (txt === 'Ask ChatGPT') {
// Walk up to a reasonable container and hide it
let container = el;
for (let i = 0; i < 6 && container; i++) {
// Heuristics: popups/menus are often "dialog/menu/tooltip/portal" like containers
const role = container.getAttribute?.('role') || '';
const isPopupy =
role === 'dialog' || role === 'menu' || role === 'tooltip' ||
container.className?.toString().toLowerCase().includes('popover') ||
container.className?.toString().toLowerCase().includes('tooltip');
if (isPopupy) break;
container = container.parentElement;
}
(container || el).style.setProperty('display', 'none', 'important');
(container || el).style.setProperty('visibility', 'hidden', 'important');
(container || el).style.setProperty('pointer-events', 'none', 'important');
}
}
}
// Run once early and again when DOM is ready
hideAskPopup();
// Watch for dynamic UI insertion (React portals etc.)
const observer = new MutationObserver((mutations) => {
for (const m of mutations) {
for (const node of m.addedNodes) {
if (node.nodeType === 1) hideAskPopup(node);
}
}
});
function startObserver() {
observer.observe(document.documentElement, {
childList: true,
subtree: true
});
}
if (document.documentElement) startObserver();
else window.addEventListener(‘DOMContentLoaded’, startObserver, { once: true });
})();
Discussion in the ATmosphere