Is WritingWiz - AI Writing Helper safe?
We analyzed WritingWiz - AI Writing Helper version 1.0.4's actual code and gave it a 48/100 trust score. WritingWiz fits its writing purpose but combines…
Bottom line
WritingWiz fits its writing purpose but combines very broad page access with an unsafe page-to-extension message bridge.
What it can access
It can read and change text on every website for writing help [Q1][Q2], including editable content [Q3], and send requested writing data to WritingWiz [Q6].
Security weaknesses
Any website can send unchecked messages to privileged features, potentially triggering requests or changing stored commands [Q16][Q21].
Signs of misuse
Data goes to WritingWiz for its writing features [Q6]; its own sign-in data is sent only there, with no browser-credential theft shown [Q14].
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It requests storage and scripting permissions plus host access to every URL.
Declares storage, scripting, and <all_urls> host access. — manifest.json:8-18
Which websites can it run on, and can it read or change what appears on those pages?
It reads selections and editable page content so users can rewrite or continue text.
Implements selection reading for Google Docs, contenteditable regions, text areas, inputs, and editor iframes. — src/pages/background/index.js:1-17
Injects the writing UI into every completed tab and all frames after login. — src/pages/background/index.js:221
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
Selected text, prompts, page context, and writing preferences can be sent to WritingWiz when a writing operation is requested.
Posts text or operation data to the configured humanize and writing endpoints. — src/pages/background/index.js:218-221
Fixes the AI service destination at https://api.writingwiz.com/api. — assets/js/config.04iKKm9F.js:1
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
It stores authentication, preferences, two recent on-page prompts, and custom-command names and instructions locally.
Loads and updates the custom-commands storage entry. — src/pages/background/index.js:1
Loads writing-preferences, auth, and recent-onpage-prompts; retains the latest two prompt records. — src/pages/background/index.js:218
Persists account and popup state through chrome.storage.local. — src/pages/popup/index.js:1,28
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
Its popup can copy generated text, and its page writers synthesize paste events; no silent file download or device access was found.
Uses ClipboardEvent and DataTransfer objects to paste generated plain text into supported editors. — src/pages/background/index.js:1-17
Provides visible Copy Text controls for generated output. — src/pages/popup/index.js:1
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
It sends writing content and settings to WritingWiz's own services; no unrelated recipient was found.
Defines only WritingWiz web and AI API bases. — assets/js/config.04iKKm9F.js:1
POSTs user text or writing-operation objects to /humanize or /writing. — src/pages/background/index.js:218-221
Does it download or run code, settings, or instructions supplied by a remote server?
No evidence of this behavior was found in the reviewed package.
Remote responses are authentication, subscription, or generated-writing results; packaged code defines behavior. — src/pages/background/index.js:218-221
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
After login, it automatically injects its UI and message bridge whenever a tab completes loading; normal AI requests are user initiated, but the bridge permits page-initiated calls.
The tabs.onUpdated listener injects two scripts into all frames when an auth token exists. — src/pages/background/index.js:221
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.
Requests no browser-settings, proxy, search, or management permission. — manifest.json:8-18
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.
Decodes a fixed property name and adds a per-session UUID for Google Docs compatibility. — src/pages/docs/index.js:1
The minified bundle retains readable endpoint, storage-key, message-type, and operation strings. — src/pages/background/index.js:1-221
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 the fixed library expression Function("return this")(). — assets/js/lodash.groupby.D-e9PgLS.js:1
Does it track the websites, pages, searches, or links you visit?
No evidence of this behavior was found in the reviewed package.
Grants host access to <all_urls>. — manifest.json:12-14
Checks location for editor compatibility and injects into each completed tab. — src/pages/background/index.js:1,221
Does it create a persistent ID or browser fingerprint to recognize you?
No evidence of this behavior was found in the reviewed package.
Defines only WritingWiz service endpoints. — assets/js/config.04iKKm9F.js:1
Observed network paths support authentication and AI writing operations. — src/pages/background/index.js:218-221
Does it send cookies, session details, authentication data, or page contents elsewhere?
It stores a WritingWiz auth token and sends it only to WritingWiz services; cookie reading or credential theft was not demonstrated.
Reads auth from extension storage and places its token in Authorization for WritingWiz requests. — src/pages/background/index.js:218-221
Identifies the authorized destinations as WritingWiz domains. — assets/js/config.04iKKm9F.js:1
Does it record typing, form entries, clipboard contents, or screenshots?
It reads selected input, text-area, contenteditable, iframe-editor, and Google Docs text; key listeners detect the slash shortcut rather than recording general keystrokes.
Implements selection readers and shortcut listeners for several editor types. — src/pages/background/index.js:1-17
Can a website or remote server send commands that make the extension take actions?
Any visited page can send accepted bridge messages that trigger authenticated WritingWiz requests or custom-command changes and receive the response.
An all-frame window message listener forwards four message types to runtime handlers without an origin, source, nonce, or user-gesture check. — src/pages/background/index.js:221
Does it alter links, referral codes, advertisements, shopping carts, or search results?
No evidence of this behavior was found in the reviewed package.
Creates helper UI and writes generated text through ranges, execCommand, paste events, and editor-specific paths. — src/pages/background/index.js:1-17
Injects the helper into all frames after login. — src/pages/background/index.js:221
Does it redirect or modify web traffic, request headers, downloads, or proxy settings?
It makes authenticated HTTPS requests to WritingWiz for AI generation and account functions; it does not proxy unrelated browser traffic.
Defines the fixed WritingWiz API destinations. — assets/js/config.04iKKm9F.js:1
Performs POST requests for humanize and writing operations. — src/pages/background/index.js:218-221
Can it communicate with software on the computer or services running on localhost?
No evidence of this behavior was found in the reviewed package.
Requests no nativeMessaging permission. — manifest.json:8-18
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 writing responses and inserts result strings into editors; no string-to-code sink receives them. — src/pages/background/index.js:1-17,218-221
Can ordinary websites access privileged extension features through messaging or exposed files?
It exposes an unrestricted page-to-extension bridge on all sites after login, allowing page input to reach privileged services and storage operations.
Forwards page messages to runtime.sendMessage and posts the privileged response back using a page-controlled identifier. — src/pages/background/index.js:221
Runtime handlers use stored auth, return recent prompts, and return or modify the custom-command list. — src/pages/background/index.js:1,218,221
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
Visible helper flows start from user selections, slash triggers, and operation buttons. — src/pages/background/index.js:1-17
The injected bridge accepts matching window messages from the page without validating their source or origin. — src/pages/background/index.js:221
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
Observed work is UI handling, editor integration, storage, and remote AI requests. — src/pages/background/index.js:1-221
Does it change form fields or where a form sends its information?
It intentionally inserts generated text into inputs and rich editors, but no form-action rewrite or silent submission was found.
Writes plain text into text areas, inputs, contenteditable nodes, Google Docs, and supported iframe editors. — src/pages/background/index.js:1-17