How to disable the very annoying Ask ChatGPT?


Each time I select something in the ChatGPT’s web interface, I see that thing hovering, which eats my mouse focus and strays my selection. It annoys me to death. I would like to have to ability to turn it off.

6 Likes

I second this, very annoying feature

1 Like

I made a tampermonkey script to hide it. Works so far.

(function() {
‘use strict’;

setTimeout(function(){
    // Create a new element to prepend
    const newElement = document.createElement('style');
    newElement.textContent = '.fixed {display: none;}';

    // Prepend the new element to the body
    document.head.append(newElement);


}, 4000);

})();
1 Like

Always covering something I need to copy. I’m IN ChatGPT already, asking it questions. Why do you need to prompt me to do what I am already doing?

Yes, thumbs down on the Ask ChatGPT bubble! It gets in the way of things I’m trying to read or copy. Please add a switch to turn it off.. Or remove the annoyance completely!

This is what your robot told me to tell you:
The floating “Ask ChatGPT” bubble that appears when selecting text in the ChatGPT web UI is intrusive, blocks content, and triggers constantly. Please add a user-visible setting to disable it entirely.

2 Likes

Completely agree, this is intrusive and absolutely unnecessary. As Bill said, if I am in chatgpt already why would I need a prompt for me to ask chatgpt something? Please for the love of all of our sanity, remove this or give me a way to disable it!

2 Likes

It’s such bad design that I signed up to this community just to post about it. Absolutely disruptive and absurd.

2 Likes

Is there now a way to toggle this disruptive insert from settings ?
Thank you for making a userscript however I do not wish to use proprietary software “tampermonkey”

1 Like

How in the world did they ever think this was a good idea? Worst thing ever. Isn’t there a way to turn it off?

Me too. It’s strikes me as badly broken design.

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 });
})();