Is TinaMind - The most powerful AI Assistant! safe?
We analyzed TinaMind - The most powerful AI Assistant! version 2.26.0's actual code and gave it a 60/100 trust score. This is a capable AI assistant with…
Bottom line
This is a capable AI assistant with purpose-aligned features, but its broad site access and handling of page content create meaningful privacy and security concerns.
What it can access
It can run on every site, read selected page content, use cookies, and process uploads for AI features.[Q1][Q2][Q4][Q6]
Security weaknesses
Broad site access and cookie use could increase harm if compromised.[Q1] Large bundled code is harder to review.[Q10] Website messaging and traffic changes add control.[Q16][Q18]
Signs of misuse
It sends feature-related content to several services and keeps persistent analytics IDs.[Q6][Q13] No evidence shows authentication theft or deceptive advertising.[Q14][Q17]
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It requests tabs, cookies, storage, request-rule and context-menu permissions plus access to every website. This supports its broad AI assistant features but gives it extensive browser access.
Declares tabs, storage, cookies, declarativeNetRequest and contextMenus with <all_urls> host access and a content script on all URLs. — manifest.json:28-50
Which websites can it run on, and can it read or change what appears on those pages?
It injects a sidebar into every page and can extract titles, selected text and cleaned page content. It also adds YouTube and supported AI-site controls.
Loads static/js/content.js on <all_urls>. — manifest.json:28-38
Creates a tinamind-app element on every page and includes page-content, selection, YouTube and AI-site integrations. — static/js/content.js:1
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
The all-site page access can technically see sensitive page fields. Reviewed code watches user selections inside text inputs for quick actions, but no password or payment-field harvesting was found.
Selection handlers recognize INPUT and TEXTAREA elements and update the selected-text state after a user selection. — static/js/content.js:1
The content script runs on every URL rather than a narrow set of supported sites. — manifest.json:28-38
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
It reads and removes TinaMind's is_login cookie and accesses the current ChatGPT session through ChatGPT's authenticated services. No history, bookmark or download-manager access was found.
Cookie message handlers get or remove is_login for https://tinamind.com. — static/js/background.js:1
Fetches https://chatgpt.com/api/auth/session with credentials and uses its access token for ChatGPT backend API calls. — static/js/background.js:1
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
Users can paste, choose or drop files and images for AI and OCR processing, and some controls read or write the clipboard. No location, microphone, installed-app or native-messaging access was found.
Implements image/file upload, OCR submission and clipboard copy/paste UI flows. — static/js/content.js:1
Does not declare geolocation, audioCapture, videoCapture, management or nativeMessaging permissions. — manifest.json:39-46
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
Prompts, conversation history, selected text, page extracts, captions and user uploads can leave the browser. Destinations include services.tinamind.com, ChatGPT, Google search and video-caption services depending on the chosen feature.
Proxies AI completion, summary, translation, document, search and page-content requests to fixed and feature-selected HTTPS services. — static/js/background.js:1
Builds AI requests from messages, selected text, extracted pages, captions, files and images. — static/js/content.js:1
Does it download or run code, settings, or instructions supplied by a remote server?
It downloads account settings, model choices, prompt catalogs, shortcuts and other instructions from TinaMind. These change feature behavior and prompts, but reviewed responses are treated as data rather than executable JavaScript.
Defines TinaMind API clients for user configuration, prompt catalogs, shortcuts, models and AI requests. — static/js/background.js:1
Applies remotely supplied settings, actions and prompts in the assistant UI. — static/js/content.js:1
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
On installation it opens TinaMind's website, and it automatically inserts its UI on all pages. AI submissions and page actions otherwise require visible user interaction or an enabled feature.
The install handler opens https://tinamind.com/. — static/js/background.js:1
Appends the global sidebar element after a two-second delay and adds the YouTube widget on matching pages. — static/js/content.js:1
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.
No search, homepage, new-tab override, proxy, privacy or browserSettings capability is declared. — manifest.json:1-71
Is any important behavior difficult to inspect because the code is hidden, heavily obfuscated, dynamically generated, or supplied by third parties?
The main content bundle is 7.5 MB and the background bundle is 823 KB, both compiled and minified with many libraries. Core flows remain traceable, but exhaustive manual review is difficult.
A single 7.5 MB minified bundle contains UI, parsing, AI clients and third-party dependencies. — static/js/content.js:1
An 823 KB minified bundle contains request, analytics, ChatGPT and browser-control logic. — static/js/background.js:1
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.
The sole new Function site is Function("return this")(), a fixed library fallback rather than variable or remote text. — static/js/background.js:1
Contains the same bundled fixed-string fallback and no eval call. — static/js/content.js:1
Does it track the websites, pages, searches, or links you visit?
No evidence of this behavior was found in the reviewed package.
Sends Measurement Protocol events to google-analytics.com/mp/collect with client_id, user_id, session_id, event name and parameters. — static/js/background.js:1
Handles ANALYTICS_LOG messages from the content UI. — static/js/background.js:1
Does it create a persistent ID or browser fingerprint to recognize you?
It stores persistent random client and user IDs for analytics. Its ChatGPT proof system also derives a fingerprint-like token from browser and timing properties for ChatGPT's anti-bot challenge.
Creates and stores UUID-based analytics clientId and fallback userId values. — static/js/background.js:1
Builds a ChatGPT enforcement proof from navigator, language, window-property, performance, time and random values and hashes it with bundled WASM. — static/js/background.js:1
Does it send cookies, session details, authentication data, or page contents elsewhere?
Requested page text, captions, prompts and uploads can be sent for AI processing. The ChatGPT access token is used with ChatGPT services; no code was found sending it to TinaMind or unrelated domains.
AI, summary, OCR, document and caption features assemble user content for remote processing. — static/js/content.js:1
Retrieves the ChatGPT session accessToken and applies it as a bearer token to chatgpt.com backend-api requests. — static/js/background.js:1
Does it record typing, form entries, clipboard contents, or screenshots?
It monitors user-selected text, including selections in inputs and textareas, and supports user-triggered clipboard, image and file processing. No blanket keystroke logging or silent screenshot capture was found.
Selection listeners capture highlighted page or form text to offer quick AI actions. — static/js/content.js:1
OCR converts a user-selected or dropped image to an AI asset only after submission. — static/js/content.js:1
Can a website or remote server send commands that make the extension take actions?
Pages on tinamind.com subdomains can update settings, shortcuts and disabled-page lists or refresh the AI client. They cannot directly invoke the background worker's generic request and page-action handlers.
Allows external extension messaging from https://*.tinamind.com/*. — manifest.json:62-66
onMessageExternal accepts SETTINGS_CHANGE, SHORTCUTS_CHANGE, DISABLED_PAGES_CHANGE, RETRIEVE_DISABLED_PAGES and REFRESH_WEBAPI_CLIENT after TinaMind hostname validation. — static/js/background.js:1
Does it alter links, referral codes, advertisements, shopping carts, or search results?
No evidence of this behavior was found in the reviewed package.
The install flow opens tinamind.com and the fixed application URLs include pricing, billing and dashboard pages. — static/js/background.js:1
Contains upgrade modal and subscription UI driven by account configuration. — static/js/content.js:1
Does it redirect or modify web traffic, request headers, downloads, or proxy settings?
It installs request rules that rewrite Origin and Referer to chatgpt.com for selected ChatGPT and Azure websocket requests. This supports the integration but intentionally changes request metadata.
On install, updateDynamicRules creates modifyHeaders rules for chat.openai.com XHR and *.webpubsub.azure.com websocket traffic. — static/js/background.js:1
Declares declarativeNetRequest and all-URL host access. — manifest.json:39-46
Can it communicate with software on the computer or services running on localhost?
No evidence of this behavior was found in the reviewed package.
No nativeMessaging permission is declared and no private-network host is listed. — manifest.json:1-71
Generic request and page-content helpers can fetch supplied URLs from trusted extension UI messages. — static/js/background.js:1
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.
Contains an embedded SHA-3 WebAssembly module invoked by the ChatGPT enforcement-token proof loop. — static/js/background.js:1
The extension CSP permits local WebAssembly but still limits scripts to self. — manifest.json:67-69
Can ordinary websites access privileged extension features through messaging or exposed files?
No evidence of this behavior was found in the reviewed package.
Declares images/*, json/* and static/* as web-accessible to <all_urls>. — manifest.json:51-61
Direct external messaging is separately limited to TinaMind subdomains. — manifest.json:62-66
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
Feature activation follows stored settings, page type, subscription state and user actions. — static/js/content.js:1
Remote configuration covers models, prompts and product settings rather than a concealed activation trigger. — static/js/background.js:1
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
The bundled hash loop is tied to ChatGPT enforcement-token generation and stops when the challenge threshold is met or its fixed attempt limit is reached. — static/js/background.js:1
Does it change form fields or where a form sends its information?
It adds helper controls beside supported AI chat inputs and can populate or use their text after user interaction. No form-action replacement, hidden submission, password editing or redirection to another server was found.
Adds visible helper buttons to selected ChatGPT, Claude and Bard input areas and manipulates their values for requested assistant actions. — static/js/content.js:1
No assignment to HTMLFormElement.action or covert form-submit path was found in the reviewed application flow. — static/js/content.js:1