Is Send Mass Mail + HTML inserter for Gmail safe?
Send Mass Mail + HTML inserter for Gmail sends visible page text to gpt.ga when its AI assistant generates answers.
The extension installs an AI assistant content script on all websites and includes page context by default when generating an answer. That page context is built from visible text in the page body, then sent through the background script to gpt.ga's AIAssistant.getAnswers API.
Who publishes itSemalt LLC - no other listings under this identity
Semalt LLC - no other listings under this identity
What this publisher told the store about itself, and the other listings that told it the same thing.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Page Text Sent to gpt.ga for AI Answers
With page context on, generating an AI assistant answer makes the extension read visible page text and include it in a request to gpt.ga.
It runs on all websites, so this can include content from non-Gmail pages where the panel is used.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-359
- Source
- Dynamic sandbox
You generate an assistant answer with page context enabled.
The page-context setting defaults to enabled in the assistant component.
The extension reads visible text from the current page and sends it to gpt.ga with the answer request.
The code adds the text after a Page context marker before sending the GET_ANSWERS message to the background service worker.
- Page context markerPage context:
This separates the webpage text from the rest of your assistant prompt.
- Visible page textQuarterly roadmap: launch timeline, account notes, and visible project comments (illustrative)
This can reveal the content of the page you are reading when you ask the assistant to use page context.
- Assistant promptSummarize this page for a follow-up email
Your selected or typed prompt is sent alongside the page text so the remote answer can be generated.
- Request envelopeargsJson contains mode, promptID or prompt, and data
The page context and prompt are wrapped into the assistant API request sent from the extension.
The source path from page text to the gpt.ga POST
Generate action with page context enabled by default
assistant.jsincludePageContext: true,async generateAnswer() { const request = { mode: this.mode, promptID: 0, prompt: "", data: [] }; if (this.mode === "select") { request.promptID = this.promptID; } else { request.prompt = this.customPrompt; } if (this.includePageContext) { request.data.push("Page context:"); request.data.push(this.getPageContext()); } request.data.push("Additional context:"); request.data.push(...this.context); return this.sendMessage({ type: "GET_ANSWERS", data: request });}Page-text collector used by the Generate action
assistant.jsgetPageContext() { return this.getPageText(document.body).trim();}getPageText(node) { const blockedTags = new Set([ "SCRIPT", "STYLE", "NOSCRIPT", "TEMPLATE", "IFRAME", "HEAD", "META", "LINK" ]); if (node.nodeType === Node.ELEMENT_NODE && node.id === "ai-assistant-extension") { return ""; } if (node.nodeType === Node.ELEMENT_NODE && blockedTags.has(node.tagName)) { return ""; } if (node.nodeType === Node.TEXT_NODE) { return node.textContent || ""; } let pageText = ""; for (const child of Array.from(node.childNodes)) { pageText += this.getPageText(child); } return pageText;}Background API wrapper posting to gpt.ga
background.jsconstructor() { this.domainAPI = "https://gpt.ga"; this.jwt = "";}async getAnswers(params) { return this.post("AIAssistant.getAnswers", params);}async post(method, ...args) { const body = new FormData(); const url = `${this.domainAPI}/api/call/${method}`; body.append("argsJson", JSON.stringify(args)); const headers = new Headers(); headers.set("Authorization", `Bearer ${this.jwt}`); headers.set("X-Chrome-Extension-Domain", chrome.runtime.getURL("")); const response = await fetch(url, { method: "POST", credentials: "include", headers, body }); const data = await response.json(); if (data.err) { throw new Error(data.err); } if (data.meta) { this.setJWT(data.meta.jwt); } return data.res;}- gpt.ga
Receives the AIAssistant.getAnswers POST containing the assistant prompt and the page-context data assembled by the extension.
What it can do
Permissions this extension asks for, as declared in version 2.2.3. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.
Read and change your data on every site you visit
<all_urls>
Add items to the right-click menu
contextMenus
Store data in your browser
storage
Where it sends data
Destinations our analysis observed Send Mass Mail + HTML inserter for Gmail contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.
- gpt.ga
Send Mass Mail + HTML inserter for Gmail sends data to gpt.ga. No other extension we have analysed sends data here.