Is QuestionAI Homework Powered AI Assistant safe?
We analyzed QuestionAI Homework Powered AI Assistant version 2.8.28's actual code and gave it a 38/100 trust score. This extension provides useful AI page…
Bottom line
This extension provides useful AI page assistance but combines very broad webpage access with unexplained cross-site tracking and persistent identifiers.
What it can access
It runs across nearly all websites, can read selected or Google Forms content, capture requested screenshots, use cookies, and inspect installed extensions.[Q1][Q2][Q4][Q15]
Security weaknesses
All-site page access and remotely changeable tracking rules create meaningful misuse potential, although no arbitrary remote commands or browser-setting changes were found.[Q7][Q16][Q18][Q21]
Signs of misuse
It automatically sends visited page addresses and interaction data to a separate tracking service while spreading persistent identifiers across unrelated sites.[Q8][Q12][Q13]
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It requests cookies, tabs, scripting, management, storage, side-panel and all-URL access, then injects seven page access across all websites. Page assistance explains broad page access, but cross-site cookie and installed-extension access are broader than the advertised homework features.
Declares cookies, tabs, scripting, management and <all_urls>, plus seven all-site content scripts, several in every frame. — manifest.json:1-2
Uses broad cookie helpers and chrome.management.getAll/getSelf. — background.d0591844.js:37,45
Which websites can it run on, and can it read or change what appears on those pages?
It runs on every site and some embedded frames. It adds QuestionAI controls, reads selected text and Google Forms questions, captures the visible tab after a command, and can fill form answers after a user click.
Registers copilot, crop, selection, sidebar and webpage-assistant scripts on <all_urls>. — manifest.json:1-2
Parses Google Forms questions and writes returned answers into text, radio, checkbox or select controls. — copilot.b68e6a51.js:38
Builds a visible action menu from the user's current text selection. — underline-word.cede9350.js:55
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
It can read selected text and Google Forms question content, including options and image URLs. Those sources are limited to visible assistant actions and the Google Forms feature; no general password, payment-field or keystroke collector was found.
Reads window selection and sends the chosen text only after an Answer, Explain, Summarize, Translate or Grammar action. — underline-word.cede9350.js:55
Reads Google Forms titles, choices and image URLs for the answer button; no general submit or password-field listener is present. — copilot.b68e6a51.js:38
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
It uses cookies and can enumerate installed extensions. First-party QuestionAI session cookies support login, but it also creates its own identifier cookies on Google, YouTube, Instagram, Facebook and Baidu.
Defines chrome.cookies get/set helpers; Gp writes QUESTION_AI_UUID and QUESTION_AI_PCUID across the fixed site list. — background.d0591844.js:25,37
Runtime handlers call chrome.management.getAll and getSelf. — background.d0591844.js:45
Requests cookies and management, but not history, bookmarks or downloads. — manifest.json:1-2
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
It can list installed browser extensions and copy generated text to the clipboard after a click. It has no native-messaging, location, camera, microphone or general file-system permission.
Uses chrome.management.getAll/getSelf for extension information. — background.d0591844.js:45
Calls navigator.clipboard.writeText from visible copy controls; no clipboard read is present. — sidebar.cc1d36ec.js:38,55
Omits nativeMessaging and device-sensor permissions. — manifest.json:1-2
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
Selected text, screenshots and Google Forms questions go to QuestionAI when the user invokes those features. Independently, every-page telemetry sends visited origins/paths, identifiers and interaction events to StudyQuicks services.
User-selected text becomes the content of a QuestionAI chat request after a menu action. — underline-word.cede9350.js:55
captureVisibleTab supplies the screenshot workflow after a command/context-menu action. — background.d0591844.js:45
Initializes autotrack.studyquicks.com telemetry and sends Google Forms question text to QuestionAI after Get the answer. — copilot.b68e6a51.js:27,38
Does it download or run code, settings, or instructions supplied by a remote server?
It downloads telemetry selector rules and AI answers. Rules can change which page elements are watched, and AI option text can become helper markup after a click.
Fetches StudyQuicks tracking rules, attaches selector-based click telemetry and handles QuestionAI chat responses. — copilot.b68e6a51.js:27,38
Places formatted AI option text into a Google Forms helper with innerHTML after the user requests an answer. — copilot.b68e6a51.js:38
The bundled eval/new Function implementation is a DOM-library helper; no call from fetched text was found. — background.d0591844.js:25
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
All-page telemetry and identifier-cookie replication occur automatically, without a separate user action. Screenshots, selected-text queries and form answering require visible commands or clicks.
Initializes built-in page telemetry when the all-site content script loads. — copilot.b68e6a51.js:27,38
Creates or retrieves QuestionAI identifiers and propagates them to the fixed site list. — background.d0591844.js:37
Screenshot capture follows the screenshot command, context-menu entry or runtime action. — background.d0591844.js:45
Can it change important browser settings, including your proxy, search engine, homepage, privacy settings, or other extensions?
No evidence of this behavior was found in the reviewed package.
Calls management.getAll/getSelf; no uninstall, disable or setEnabled call is present. — background.d0591844.js:45
Does not request proxy, privacy or browserSettings-style permissions. — manifest.json:1-2
Is any important behavior difficult to inspect because the code is hidden, heavily obfuscated, dynamically generated, or supplied by third parties?
Large minified bundles repeat shared libraries and include no source maps, which makes review harder. The important network destinations, tracking initialization, cookie propagation and form-writing paths remain inspectable.
Lists several multi-megabyte minified JavaScript bundles and no source-map files. — inventory.json:1
Despite minification, telemetry URLs, page-route composition and Google Forms behavior are visible. — copilot.b68e6a51.js:27,38
Does it use eval(), new Function(), or string-based timers to turn text into executable code?
No evidence of this behavior was found in the reviewed package.
Contains new Function('code','with(this) eval(code)') inside the bundled Window_run implementation. — background.d0591844.js:25
Manual call-site searches found the helper definition but no invocation of its _run method or remote-response-to-evaluation path. — inventory.json:1
Does it track the websites, pages, searches, or links you visit?
Confirmed: built-in telemetry initializes on all pages and sends window.location origin plus pathname as pageUUID to autotrack.studyquicks.com. Route changes can also add the URL hash.
Configures OB-MATH-PCW telemetry with logUrl https://autotrack.studyquicks.com/log/math_h5 and a remote StudyQuicks rule domain. — copilot.b68e6a51.js:27
The page tracker initializes automatically, derives route from origin+pathname, and submits it as pageUUID on show/hide events. — copilot.b68e6a51.js:38
Does it create a persistent ID or browser fingerprint to recognize you?
It creates persistent QUESTION_AI_UUID/PCUID values and uses them in telemetry. The background then writes the same values as cookies on several unrelated popular sites, enabling recognition across those sites.
Creates/loads QUESTION_AI_UUID and QUESTION_AI_PCUID, then writes both across QuestionAI, Google, Baidu, Facebook, YouTube and Instagram URLs. — background.d0591844.js:37
Telemetry initialization and event composition include the persistent cuid used with page-route reports. — copilot.b68e6a51.js:27,38
Does it send cookies, session details, authentication data, or page contents elsewhere?
QuestionAI session and login data stay within QuestionAI's authentication flow; credential theft was not found. User-selected content goes to QuestionAI after an action.
Reads QuestionAI session/config cookies for its own service and writes extension identifiers—not other-site login cookies—to the fixed site list. — background.d0591844.js:37,45
Sends pageUUID and identifier-bearing telemetry to StudyQuicks and user-requested form questions to QuestionAI. — copilot.b68e6a51.js:27,38
Sends selected text only after the user chooses an AI action. — underline-word.cede9350.js:55
Does it record typing, form entries, clipboard contents, or screenshots?
It captures the visible tab for its screenshot-question feature and reads selected text or Google Forms content. Capture and AI submission require user actions; passive screenshot or keystroke recording was not found.
Calls chrome.tabs.captureVisibleTab in the screenshot runtime workflow initiated by a command/context menu. — background.d0591844.js:45
Selection text is processed after a visible menu action, not through a global keylogger. — underline-word.cede9350.js:55
Google Forms parsing and answer requests are tied to the injected Get the answer control. — copilot.b68e6a51.js:38
Can a website or remote server send commands that make the extension take actions?
QuestionAI responses can fill Google Forms fields after the user clicks for an answer. StudyQuicks can remotely change telemetry selectors.
Remote rule files select watched DOM elements; QuestionAI answers reach fixed form-writing actions after a user click. — copilot.b68e6a51.js:27,38
externally_connectable is limited to *.questionai.com, *.suanshubang.cc and localhost:8080. — manifest.json:1-2
onMessageExternal handles loginEvent, changeLanguage, openChatDrawer and changePayStatus, not cookies, screenshots or arbitrary script execution. — background.d0591844.js:45
Does it alter links, referral codes, advertisements, shopping carts, or search results?
No evidence of this behavior was found in the reviewed package.
The Google Forms result renderer interpolates returned option text and assigns it with innerHTML after replaceAll('Option',''). — copilot.b68e6a51.js:38
Manual host-mutation searches found no form-action, referral, ad, cart or search-result rewriting path. — inventory.json:1
Does it redirect or modify web traffic, request headers, downloads, or proxy settings?
No evidence of this behavior was found in the reviewed package.
No webRequest, declarativeNetRequest, downloads or proxy permission is declared. — manifest.json:1-2
Observed network calls are application/telemetry requests rather than browser traffic modification. — copilot.b68e6a51.js:27,38
Can it communicate with software on the computer or services running on localhost?
No evidence of this behavior was found in the reviewed package.
Allows external messages from http://localhost:8080 but does not request nativeMessaging. — manifest.json:1-2
External messages are limited to named account/UI state actions. — background.d0591844.js:45
Does it decode, decrypt, or unpack hidden data and then execute or inject it?
No evidence of this behavior was found in the reviewed package.
The only explicit eval/new Function sink is isolated in an uncalled DOM-library helper. — background.d0591844.js:25
Downloaded telemetry rules supply selectors and event metadata, not JavaScript source. — copilot.b68e6a51.js:27,38
Can ordinary websites access privileged extension features through messaging or exposed files?
No evidence of this behavior was found in the reviewed package.
Defines a narrow externally_connectable origin list rather than <all_urls>. — manifest.json:1-2
onMessageExternal dispatches four fixed action names and does not forward arbitrary commands. — background.d0591844.js:45
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
Restricts the form assistant to docs.google.com/forms and loads remote selector rules for telemetry. — copilot.b68e6a51.js:27,38
Shows the selection menu only when usable selected text exists and includes page/site/global disable controls. — underline-word.cede9350.js:55
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
Manual searches and source review found no mining library, mining endpoint, worker pool or repeated proof-of-work loop. — inventory.json:1
Reviewed startup/runtime activity concerns identifiers, cookies, account state, commands and extension UI. — background.d0591844.js:37,45
Does it change form fields or where a form sends its information?
On Google Forms, a visible Get the answer action sends the question to QuestionAI, then fills text, radio, checkbox or select fields from the response. It does not alter the form action or submit destination, and the user still controls submission.
Parses the current Google Forms question, requests an answer on click, then assigns input values or clicks matching options and dispatches input events. — copilot.b68e6a51.js:38
Manual searches found no assignment to form.action or setAttribute('action') in packaged JavaScript. — inventory.json:1