Is Artificial Intelligence Photoshoot safe?
We analyzed Artificial Intelligence Photoshoot version 1.0.0's actual code and gave it a 74/100 trust score. This is a purpose-aligned photo tool, but…
Bottom line
This is a purpose-aligned photo tool, but users should understand that chosen images, prompts, and a persistent installation ID are sent to its service.
What it can access
It requests only local storage, but users’ chosen photos and instructions are sent to the service for generation and a persistent ID is used. [Q1][Q3][Q5][Q6]
Security weaknesses
Photo retention is described only as temporary, with exact deletion unverified, and the main application is minified, limiting review. [Q10][Q14]
Signs of misuse
No unrelated browsing or takeover is shown, but the service receives personal photos, prompts, and a persistent installation ID. [Q6][Q13][Q14]
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It requests only storage access and opens its own extension tab. This is narrow and sensible for saved settings, generation history and a persistent client identifier.
Declares an extension action, module service worker and only the storage permission; there are no host permissions or content scripts. — manifest.json:24-34
Uses chrome.storage.local for history, preferences, quality settings and the generated client ID. — assets/config-B19rx5xf.js:1
Which websites can it run on, and can it read or change what appears on those pages?
No evidence of this behavior was found in the reviewed package.
Contains no content_scripts, host_permissions or scripting permission. — manifest.json:1-35
The toolbar action opens or focuses the packaged src/app/index.html page. — assets/main.ts-BJVLlJye.js:1
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
Portrait photos and free-form generation instructions may contain sensitive personal information. They enter through the extension's own file picker and prompt fields, then go to the developer's generation service after the user starts generation.
Provides user-facing reference-photo selection, custom scene fields, session notes and shot-edit instructions. — assets/app-1v1mACc6.js:1
The generation request appends session settings, shot prompts and selected images to multipart FormData for /api/v1/generations. — assets/app-1v1mACc6.js:1
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
No evidence of this behavior was found in the reviewed package.
Declares only storage permission. — manifest.json:32-34
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
It reads image files the user explicitly chooses, limited in the interface to JPEG, PNG or WebP and 10 MB each. It does not access arbitrary folders, camera, microphone, location, screen or native applications.
Defines a 10 MB file limit and permits image/jpeg, image/png and image/webp. — assets/config-B19rx5xf.js:1
Uses a visible photo uploader and user-selected File objects as generation references. — assets/app-1v1mACc6.js:1
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
Selected photos, prompts, scene settings, model choice and language go to artificialintelligencephotoshoot.app. The same service receives a random client ID on services, WebSocket, install, uninstall and billing-event requests.
Defines https://artificialintelligencephotoshoot.app as the sole application service and creates a persistent random CLIENT_ID. — assets/config-B19rx5xf.js:1
Adds X-Client-Id to product API requests and uploads generation session, model, count, language, shot configuration and images. — assets/app-1v1mACc6.js:1
Reports installation with X-Client-Id and places that ID in the fixed uninstall URL. — assets/main.ts-BJVLlJye.js:1
Does it download or run code, settings, or instructions supplied by a remote server?
The service supplies generation options, prompt previews, job updates, token data and image URLs. These are active product data paths, but no response is evaluated as code or converted into a general browser command.
Fetches /generations/options and /generations/preview, opens a same-service generation WebSocket and renders structured generation results. — assets/app-1v1mACc6.js:1
Loads only packaged JavaScript and CSS assets. — src/app/index.html:11-13
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
On installation it reports the version and random client ID, configures a same-service uninstall URL and opens the product welcome page. Photo generation and sensitive uploads still require the user's file selection and generate action.
POSTs install lifecycle data, sets the uninstall URL and opens /welcome on initial installation. — assets/main.ts-BJVLlJye.js:1
Photo upload controls and the Generate action precede the multipart generation request. — assets/app-1v1mACc6.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.
Requests no settings, search, proxy or privacy permissions. — manifest.json:32-34
Is any important behavior difficult to inspect because the code is hidden, heavily obfuscated, dynamically generated, or supplied by third parties?
The main application is a 502 KB minified React bundle. Its services paths, user flows and strings remain readable, and most of the 23 MB package is built-in scene imagery; no deliberate obfuscation was found.
Records a 501,915-byte application bundle and a large collection of packaged JPEG scene previews. — inventory.json:1
Minifies React and application logic but preserves endpoints, field names, UI text and coherent feature flows. — assets/app-1v1mACc6.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.
All packaged JavaScript files were checked for dynamic-code primitives. — inventory.json:1
Does it track the websites, pages, searches, or links you visit?
No evidence of this behavior was found in the reviewed package.
Declares no tabs, history, content scripts or host access. — manifest.json:1-35
Lifecycle reporting contains the random client ID and extension version, not browsing activity. — assets/main.ts-BJVLlJye.js:1
Does it create a persistent ID or browser fingerprint to recognize you?
It creates a persistent random UUID and attaches it to product services requests, the generation WebSocket, token history and lifecycle tracking. This identifies one installation but is not derived from browser or device fingerprinting.
Loads CLIENT_ID from storage or creates it with crypto.randomUUID and stores it locally. — assets/config-B19rx5xf.js:1
Sends the ID as X-Client-Id and as the generation WebSocket clientId query parameter. — assets/app-1v1mACc6.js:1
Uses the same ID for installation and uninstall lifecycle requests. — assets/main.ts-BJVLlJye.js:1
Does it send cookies, session details, authentication data, or page contents elsewhere?
A complete active path sends user-selected portrait files and generation instructions to the developer's service when Generate is pressed. The interface says generated photos are stored temporarily and may become unavailable after about seven days; exact deletion is not verifiable.
Collects selected File objects, validates image types and size, then appends them with session and shot JSON to the generation FormData request. — assets/app-1v1mACc6.js:1
Sets the destination service to https://artificialintelligencephotoshoot.app. — assets/config-B19rx5xf.js:1
English history notice states that photos are stored temporarily by the generation service and may be unavailable after about seven days. — assets/app-1v1mACc6.js:1
Does it record typing, form entries, clipboard contents, or screenshots?
It processes photos explicitly chosen in its own file picker. It does not monitor typing outside its own prompt fields, read the clipboard, take screenshots or capture the camera, microphone or screen.
Implements reference-photo file selection and product-owned generation forms without capture or clipboard APIs. — assets/app-1v1mACc6.js:1
Provides no website, tab-capture or device permissions. — manifest.json:1-35
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.
Declares no externally connectable API or content-script bridge. — manifest.json:1-35
Handles structured same-service API and WebSocket responses inside the packaged application UI. — assets/app-1v1mACc6.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.
Loads same-service token tariffs and records visible billing-dialog events inside the extension page. — assets/app-1v1mACc6.js:1
Has no website access with which to manipulate third-party pages. — manifest.json:1-35
Does it redirect or modify web traffic, request headers, downloads, or proxy settings?
No evidence of this behavior was found in the reviewed package.
Requests no request-modification, downloads or proxy permission. — manifest.json:32-34
Downloads a chosen generated image with fetch, a blob URL and a temporary anchor element. — assets/config-B19rx5xf.js:1
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 or device permissions. — manifest.json:1-35
A localhost string occurs only in a generic web fallback; the extension's configured service is the fixed HTTPS production domain. — assets/app-1v1mACc6.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.
Uploads and downloads image blobs without decoding them into executable content. — assets/app-1v1mACc6.js:1
Can ordinary websites access privileged extension features through messaging or exposed files?
No evidence of this behavior was found in the reviewed package.
Contains none of the page-integration declarations that expose an extension surface to websites. — manifest.json:1-35
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
Remote options define visible generation models, fields, limits and costs in the product UI. — assets/app-1v1mACc6.js:1
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
Submits generation jobs and listens for remote progress rather than performing a concealed local compute workload. — assets/app-1v1mACc6.js:1
Does it change form fields or where a form sends its information?
No evidence of this behavior was found in the reviewed package.
Declares no content scripts, website hosts or scripting permission. — manifest.json:1-35
Hosts the React application inside the extension's own document. — src/app/index.html:15-16