{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreiexvqitconcrvsgcmrruywia373asyeyqpo6mhimvlzlnmwrblaeq",
    "uri": "at://did:plc:lk3jfj3zq4k4wxnk474axylu/app.bsky.feed.post/3mebegymblns2"
  },
  "path": "/t/how-to-disable-the-very-annoying-ask-chatgpt/1360805#post_11",
  "publishedAt": "2026-02-07T10:51:20.000Z",
  "site": "https://community.openai.com",
  "tags": [
    "@name",
    "@version",
    "@description",
    "@match",
    "@match",
    "@run-at"
  ],
  "textContent": "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!\n\n\n    // ==UserScript==\n    // @name         Hide “Ask ChatGPT” selection popup\n    //\n        http://tampermonkey.net/\n    // @version      2026-02-07.1\n    // @description  Hides the “Ask ChatGPT” popup that appears when selecting text on chatgpt.com\n    //\n           You\n    // @match        https://chatgpt.com/*\n    // @match        https://chat.openai.com/*\n    // @run-at       document-start\n    //\n            none\n    // ==/UserScript==\n\n    (function () {\n    ‘use strict’;\n\n    // Try to hide the container that holds the “Ask ChatGPT” control.\n    function hideAskPopup(root = document) {\n    // Look for clickable elements that literally say “Ask ChatGPT”\n    const candidates = root.querySelectorAll(‘button, a, [role=“button”]’);\n\n    for (const el of candidates) {\n      const txt = (el.textContent || '').trim();\n      if (txt === 'Ask ChatGPT') {\n        // Walk up to a reasonable container and hide it\n        let container = el;\n        for (let i = 0; i < 6 && container; i++) {\n          // Heuristics: popups/menus are often \"dialog/menu/tooltip/portal\" like containers\n          const role = container.getAttribute?.('role') || '';\n          const isPopupy =\n            role === 'dialog' || role === 'menu' || role === 'tooltip' ||\n            container.className?.toString().toLowerCase().includes('popover') ||\n            container.className?.toString().toLowerCase().includes('tooltip');\n\n          if (isPopupy) break;\n          container = container.parentElement;\n        }\n\n        (container || el).style.setProperty('display', 'none', 'important');\n        (container || el).style.setProperty('visibility', 'hidden', 'important');\n        (container || el).style.setProperty('pointer-events', 'none', 'important');\n      }\n    }\n\n    }\n\n    // Run once early and again when DOM is ready\n    hideAskPopup();\n\n    // Watch for dynamic UI insertion (React portals etc.)\n    const observer = new MutationObserver((mutations) => {\n    for (const m of mutations) {\n    for (const node of m.addedNodes) {\n    if (node.nodeType === 1) hideAskPopup(node);\n    }\n    }\n    });\n\n    function startObserver() {\n    observer.observe(document.documentElement, {\n    childList: true,\n    subtree: true\n    });\n    }\n\n    if (document.documentElement) startObserver();\n    else window.addEventListener(‘DOMContentLoaded’, startObserver, { once: true });\n    })();\n",
  "title": "How to disable the very annoying Ask ChatGPT?"
}