Is InPsychNow Communication Assistant safe?
We analyzed InPsychNow Communication Assistant version 1.0.5's actual code and gave it a 58/100 trust score. The extension is purpose-aligned but handles…
Bottom line
The extension is purpose-aligned but handles sensitive LinkedIn and Gmail content and has a meaningful server-controlled page-injection weakness.
What it can access
It can automatically operate on LinkedIn and Gmail, read visible profiles and complete email drafts, and send that information for rewriting or analysis. [Q1][Q2][Q3][Q6] The access fits the advertised feature, but the content may be confidential. [Q3]
Security weaknesses
Results and error messages from the selected service are inserted into LinkedIn and Gmail pages without safe text handling, so a malicious or compromised service could place harmful page content there. [Q7] The extension also permits sending content to a user-selected local service. [Q19]
Signs of misuse
There is no established evidence of hidden tracking, automatic message sending, or unrelated collection. [Q8][Q12][Q17] Sensitive analysis and rewriting happen after the user clicks clearly labeled controls. [Q8]
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It requests storage, activeTab, scripting, and persistent host access to LinkedIn, Gmail, and InPsychNow. Content.js runs automatically across LinkedIn and Gmail; activeTab and scripting are not used by the reviewed code.
Declares storage, activeTab, scripting, the three service origins, and automatic content-script injection on LinkedIn/Gmail. — manifest.json:permissions, host_permissions, and content_scripts
Which websites can it run on, and can it read or change what appears on those pages?
It reads LinkedIn profile page text, reads and replaces Gmail compose content, observes page changes, and injects floating controls and result panels into both sites.
Reads profile elements and appends the LinkedIn analysis UI. — content.js:26-81, 130-148
Finds Gmail compose content, rewrites it, and appends controls. — content.js:152-167, 202-233, 235-283
Observes the full page subtree and reinjects controls as the UI changes. — content.js:285-303
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
It reads the full text of the user's current Gmail draft, which may contain confidential, financial, legal, personal, or credential-like information. It does not read password fields or payment forms.
Finds the visible Gmail Message Body, cleans its innerText, and submits the complete draft for rewriting. — content.js:152-180, 202-220
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
It stores the services services and reusable InPsychNow user key in chrome.storage.sync, causing those settings to follow the signed-in Chrome profile. It does not request cookies, history, bookmarks, or downloads.
Reads and writes apiEndpoint and userKey in chrome.storage.sync. — popup.js:9-17, 24-31
Requests storage but not cookies, history, bookmarks, or downloads. — manifest.json:permissions
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
No evidence of this behavior was found in the reviewed package.
Declares none of these capabilities. — manifest.json:permissions
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
It sends LinkedIn profile names and biographies or complete Gmail draft text and a target personality type to InPsychNow or a user-selected services. Cloud calls include the user's services key as a Bearer credential.
Sends name and bio in the analyzeProfile message after a click. — content.js:103-127
Sends draft text and targetProfile in the rewriteEmail message after a click. — content.js:202-232
Posts the payload to the selected endpoint and adds Authorization: Bearer userKey for cloud calls. — background.js:8-34
Does it download or run code, settings, or instructions supplied by a remote server?
Remote JSON supplies personality labels, trait text, rewrite text, and error messages. Gmail rewrite text is inserted safely as plain text, but LinkedIn result fields and error strings are concatenated into innerHTML without escaping, allowing the server to inject arbitrary HTML content into the page.
Returns parsed remote JSON directly to the content script. — background.js:30-48
Concatenates data.discType, data.bigFiveTrait, and data.message into panel.innerHTML. — content.js:84-100
Concatenates server-derived error text into Gmail panel.innerHTML. — content.js:183-199
Assigns rewrittenText through innerText, preventing HTML interpretation in the draft. — content.js:223-225
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
It automatically injects and maintains controls on LinkedIn and Gmail, but profile collection, draft submission, and rewriting occur only after the user clicks a clearly labeled button. It does not automatically send Gmail messages.
Automatically adds the visible Analyze and Rewrite controls. — content.js:130-148, 235-283
Sensitive analysis/rewrite functions are bound to user click handlers. — content.js:143, 276
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.
Contains no browser override, proxy, management, or settings permission. — manifest.json:top-level fields
Is any important behavior difficult to inspect because the code is hidden, heavily obfuscated, dynamically generated, or supplied by third parties?
No evidence of this behavior was found in the reviewed package.
Readable complete service-worker logic. — background.js:1-55
Readable complete page-integration logic. — content.js:1-303
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.
Uses arrow-function callbacks for toast and injection timers. — content.js:12-24, 285-299
Uses a function callback in its save confirmation timer. — popup.js:24-31
Does it track the websites, pages, searches, or links you visit?
No evidence of this behavior was found in the reviewed package.
Limits automatic page execution to LinkedIn and Gmail. — manifest.json:content_scripts
MutationObserver chooses which visible control to maintain based on the current host. — content.js:285-303
Does it create a persistent ID or browser fingerprint to recognize you?
No evidence of this behavior was found in the reviewed package.
Reads the user-provided key solely to authorize cloud API requests. — background.js:8-28
Does it send cookies, session details, authentication data, or page contents elsewhere?
The user enters a reusable InPsychNow account key, which the extension stores in Chrome sync and sends in the Authorization header on every cloud analysis/rewrite request. It does not read Gmail or LinkedIn cookies or sessions.
Collects the InPsychNow account key. — popup.html:25-29
Stores and redisplays userKey from sync storage. — popup.js:9-17, 24-31
Sends the key as an Authorization Bearer token. — background.js:20-34
Does it record typing, form entries, clipboard contents, or screenshots?
After a click, it reads visible LinkedIn profile text or the user's Gmail draft. It does not globally record keystrokes, selections, clipboard data, screenshots, camera, or microphone input.
Collects visible profile text when Analyze DISC is clicked. — content.js:50-81, 103-127
Reads the current compose body's innerText when Rewrite is clicked. — content.js:152-180, 202-220
Can a website or remote server send commands that make the extension take actions?
No evidence of this behavior was found in the reviewed package.
Allows the user to select and persist a custom endpoint. — popup.js:19-31
Sends requests to the configured base and returns its JSON values. — background.js:8-17, 30-48
Places several response values into innerHTML without escaping. — content.js:84-100, 183-199
Does it alter links, referral codes, advertisements, shopping carts, or search results?
No evidence of this behavior was found in the reviewed package.
Injected elements are labeled InPsychNow analysis/rewrite controls. — content.js:130-148, 235-283
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, proxy, or downloads permission is declared. — manifest.json:permissions
Creates direct POST requests only for requested analysis or rewriting. — background.js:30-34
Can it communicate with software on the computer or services running on localhost?
The settings support a user-supplied local services base URL, defaulting to http://localhost:11434, and send LinkedIn/Gmail content there instead of the cloud. This is visible and user-configured, though it trusts whichever local service is selected.
Offers Cloud or Local Edge mode and a local URL field. — popup.html:33-42
Defaults local mode to http://localhost:11434 and saves it. — popup.js:19-27
Uses the configured non-cloud endpoint as the POST destination. — background.js:8-17, 30-34
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.
Parses response JSON and passes it to the content script. — background.js:35-48
Builds innerHTML from response-controlled strings. — content.js:84-100, 183-199
Uses innerText for the returned email rewrite. — content.js:223-225
Can ordinary websites access privileged extension features through messaging or exposed files?
No evidence of this behavior was found in the reviewed package.
Contains neither web_accessible_resources nor externally_connectable. — manifest.json:top-level fields
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
Chooses the LinkedIn or Gmail interface based on window.location.hostname. — content.js:287-303
Uses explicit saved cloud/local settings. — popup.js:9-31
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
Observes document.body child changes across the full subtree and debounces injection checks by 400 ms. — content.js:285-303
Does it change form fields or where a form sends its information?
After the user clicks Rewrite, the extension replaces the entire visible Gmail compose body with server-returned plain text. It does not change form actions, recipients, subject lines, or automatically send the message, and it tells the user to review the result.
Reads the compose body, sends it for rewriting, then assigns response.data.rewrittenText to body.innerText. — content.js:202-232