Is FrogHire.ai - AI Resume & Job Search, Autofill, H1B Checker safe?
We analyzed FrogHire.ai - AI Resume & Job Search, Autofill, H1B Checker version 3.10.0's actual code and gave it a 58/100 trust score. Useful…
Bottom line
Useful job-application features require unusually broad access and handle sensitive personal information, with one serious website-to-extension security weakness.
What it can access
It can run across all websites and access cookies while handling resumes, demographic details, and job applications, exceeding narrowly scoped access despite its job-search purpose. [Q1][Q3][Q4][Q6]
Security weaknesses
A webpage may invoke exposed extension actions because the message bridge does not verify the requesting page, creating a risk of unwanted autofill or UI actions. [Q21]
Signs of misuse
The package shows feature-related sharing with its service and analytics, but no established unrelated collection, deception, or credential theft. [Q6][Q13]
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It requests access to all websites, cookies, tabs, storage and identity, plus Gmail's send-only OAuth scope. The broad scope supports job discovery and autofill, while a long exclusion list removes many especially sensitive sites.
Declares *://*/* host access and cookies, storage, tabs and identity permissions. — manifest.json:3
Requests gmail.send and excludes many mail, social, payment, shopping and collaboration sites from the broad content scripts. — manifest.json:3
Which websites can it run on, and can it read or change what appears on those pages?
It reads job-page page content and internal page data to identify listings, analyze jobs and locate application fields. This is active on supported job sites and is necessary for the advertised job-search and autofill features.
Extracts listing details from LinkedIn, Indeed, Glassdoor, Google Jobs and Handshake page state and DOM. — content-scripts/main.js:1-3
Locates and reads application controls so it can choose and fill matching profile answers. — content-scripts/autofill.js:1-6
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
Autofill processes resume text, work authorization, sponsorship, gender, race, veteran status, disability and other demographic answers. Those details are sent to FrogHire's AI-answer services only while preparing answers for a user-started autofill; password or private-message collection was not found.
Builds AI-answer context from resume plain text and profile employment/demographic fields, then posts it with the question and choices to FrogHire. — content-scripts/autofill.js:1
The normal UI asks the user to select the applicant/resume and confirm before starting autofill. — content-scripts/isolated.js:505
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
It reads FrogHire and LinkedIn cookies and works with active tab URLs. No bookmarks or Chrome history-database access was found.
Reads FrogHire authentication state and LinkedIn cookies, including JSESSIONID for LinkedIn requests. — background.js:1-4
Declares cookies and tabs but not bookmarks or history permissions. — manifest.json:3
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
A user can select and upload a resume, and the extension can generate or handle resume documents. No camera, microphone, clipboard, geolocation, arbitrary local-file or installed-application access was found.
Implements resume selection, upload, parsing and preview features. — content-scripts/isolated.js:1-505
Does not request clipboard, geolocation, downloads, nativeMessaging, camera or microphone permissions. — manifest.json:3
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
It sends resumes, profile details, job information and application questions to FrogHire for the features the user requests. Google Analytics receives a persistent client ID, optional FrogHire user ID and limited feature telemetry; no sale or unrelated recipient was demonstrated.
Posts resume/profile context and application questions to /v1/service/autofill/fill or fill_batch. — content-scripts/autofill.js:1
Posts extension feature events with a persistent client ID and optional user ID to Google Analytics Measurement Protocol. — background.js:4
Does it download or run code, settings, or instructions supplied by a remote server?
FrogHire can remotely supply site/autofill configurations and AI-generated form answers. They are consumed as structured selectors, field rules and answer text; no path from the response to executable JavaScript was found.
Loads packaged configs first, then can fetch missing config/index JSON from FrogHire's ext_config endpoint and cache it. — content-scripts/autofill.js:1
Uses remote answer text as a form value, not as code. — content-scripts/autofill.js:1-6
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
Broad page access load automatically on non-excluded sites to detect job features and show FrogHire UI. Sending resume/profile data and filling an application normally require sign-in, a selected profile/resume and an explicit confirmation.
Registers broad isolated/main-world content scripts and a separate autofill script on supported applicant-tracking sites. — manifest.json:3
Displays a Confirm & Start Autofill control and checks login/profile/resume state before the normal flow begins. — content-scripts/isolated.js:505
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.
Does not declare proxy, management, search-provider or settings-override permissions. — manifest.json:3
Is any important behavior difficult to inspect because the code is hidden, heavily obfuscated, dynamically generated, or supplied by third parties?
Several application bundles are heavily minified, including a roughly 7 MB isolated page access. This raises review difficulty, but sensitive paths remained traceable and minification alone is not evidence of abuse.
Large generated/minified UI and application bundle. — content-scripts/isolated.js:1-505
Minified autofill bundle still exposes identifiable config, capture and network flows. — content-scripts/autofill.js:1-6
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.
Direct review found no eval or Function-constructor call receiving remote or page-controlled text. — background.js:1-20
Remote configs and AI answers are parsed as data and form values. — content-scripts/autofill.js:1-6
Does it track the websites, pages, searches, or links you visit?
No evidence of this behavior was found in the reviewed package.
For unresolved autofill events, normalizes page_location to URL origin plus pathname before telemetry. — content-scripts/autofill.js:1
Allows page_location in Google Analytics feature events and uses tab URLs for active job-search operations. — background.js:4
Does it create a persistent ID or browser fingerprint to recognize you?
It generates a persistent analytics client ID and may attach the logged-in FrogHire user ID to Google Analytics events. The reviewed events concern extension features; advertising personalization consent is explicitly denied.
Stores fh:telemetry:client_id, creates session IDs and sends them with optional user_id to Google Analytics. — background.js:4
Sets ad_user_data and ad_personalization consent to DENIED in Measurement Protocol payloads. — background.js:4
Does it send cookies, session details, authentication data, or page contents elsewhere?
It reads FrogHire authentication cookies and LinkedIn session cookies, and obtains a Gmail OAuth token when the user uses mail features. LinkedIn cookies stay in credentialed LinkedIn requests and Gmail tokens go to Gmail; credential theft was not demonstrated.
Reads LinkedIn JSESSIONID as the csrf-token and makes credentials-included requests to LinkedIn's Voyager API. — background.js:1-4
Uses chrome.identity interactively and sends MIME messages to gmail.googleapis.com, retrying after token removal on 401. — background.js:20
Does it record typing, form entries, clipboard contents, or screenshots?
It reads and fills job-application controls, uploads the chosen resume and records eligible changed/clicked answers after autofill for reuse. Captured answers are stored in extension IndexedDB; no passive keystroke logger or screenshot capture was found.
After answer capture starts, listens for change/click events and emits normalized eligible field answers. — content-scripts/main.js:1
Stores captured answers under autofill-captured-answers and uses profile/resume data to fill supported forms. — content-scripts/autofill.js:1-6
Can a website or remote server send commands that make the extension take actions?
FrogHire's server can return AI-generated answers and remote field configurations that affect what the extension inserts into a job form. This is expected, user-started product behavior, not general remote browser control or remote-code execution.
Fetches AI answers from fixed FrogHire endpoints and applies returned text through packaged autofill handlers. — content-scripts/autofill.js:1-6
The normal workflow requires the user to confirm before the autofill session starts. — content-scripts/isolated.js:505
Does it alter links, referral codes, advertisements, shopping carts, or search results?
No evidence of this behavior was found in the reviewed package.
Implements packaged handlers for text, choice, date and file-upload application fields. — content-scripts/autofill.js:1-6
Shows autofill progress and requires Confirm & Start Autofill in the ordinary UI flow. — content-scripts/isolated.js:505
Does it redirect or modify web traffic, request headers, downloads, or proxy settings?
It makes FrogHire, LinkedIn, Gmail, Handshake, Mapbox and analytics requests needed by job-search features. No proxy setting, arbitrary traffic redirection or hidden executable download was found.
Contains fixed service integrations for FrogHire, LinkedIn, Gmail, Handshake, Mapbox and Google Analytics. — background.js:1-20
Requests broad hosts but not the proxy or downloads permission. — manifest.json:3
Can it communicate with software on the computer or services running on localhost?
No evidence of this behavior was found in the reviewed package.
Does not declare nativeMessaging or external-application permissions. — manifest.json:3
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.
Remote ext_config responses are JSON configurations and autofill responses are answer strings. — content-scripts/autofill.js:1-6
No eval, Function-constructor, script injection or dynamic module import from a remote URL was identified. — background.js:1-20
Can ordinary websites access privileged extension features through messaging or exposed files?
The page-to-extension window-message bridge checks a namespace and instance ID but does not authenticate the page sender. A page can invoke exposed methods that open UI or start autofill with caller-supplied data.
The window RPC listener accepts matching postMessage objects without checking event.source, origin or a secret capability. — content-scripts/isolated.js:29
Exposes startAutofill and UI methods; startAutofill uses the profile/resume supplied by the caller rather than loading saved data itself. — content-scripts/isolated.js:74,505
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
Checks login/premium state, daily automation limits and remote API results before enabling features. — content-scripts/isolated.js:1-505
Falls back from packaged configuration to cached or remotely fetched ext_config data. — content-scripts/autofill.js:1
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
Reviewed background work is job search, API access, storage and telemetry; no mining workflow or pool endpoint appears. — background.js:1-20
Does it change form fields or where a form sends its information?
It intentionally edits application inputs and uploads the selected resume. No code was found silently changing a form's action URL, rerouting submission to another domain or replacing the intended submit destination.
Writes values into supported application controls and handles the resume upload field. — content-scripts/autofill.js:1-6
Captures eligible answer changes but does not rewrite form.action or submission destinations. — content-scripts/main.js:1-3