Security and permissions
Why the extension asks for what it asks for.
Last reviewed October 14, 2026, against the extension's source.
Chrome shows a permission warning when you install YouxAI Apply Agent, and an extension scanner may repeat it. This page says what each permission is used for, in the words of the code that uses it. For what data we keep, read the privacy policy.
The short version
- The AI model runs on your computer. Scoring a job and drafting an answer do not go to an AI service.
- Copilot never submits. It fills the form and stops so you press Submit.
- Autopilot sends only an application that passes the readiness check and a 60% match, and it stops for anything sensitive.
- The debugger permission is used to type and click like a person would, not to watch your browsing.
The debugger permission
What the extension does with it, from the code:
- It sends clicks, text and key presses to the application tab, and moves focus to a field.
- It reads the page structure it needs to find the right control: the accessibility tree, element positions and the frame layout.
- Before each key or text it checks that the field it meant to type into is the focused one, and stops if it is not.
- It attaches only when an action needs it, to that one tab, and lets go after about a minute of no use.
- Chrome itself shows a notice on a tab while a debugger is attached to it.
Why scripts can’t fill these forms
This is the engineering reason the debugger permission exists. Three things get in the way of a plain script.
- React keeps its own record of an input’s value. Setting
element.valuefrom a script can be ignored, because React sees that its record already matches and drops the change event. Some controlled fields also revert a value a script wrote. The extension first sets the value the way the browser does and resets React’s record, and uses real input when that is not enough. - Some sites draw their own widgets. Workday’s option lists, radio buttons, checkboxes and date controls are its own widgets, not native inputs, so a written value is not a choice. The extension clicks them the way a person would, then reads the state back, and leaves the question for you if the click did not take.
- Some controls only answer input the browser delivers. Chrome marks events that a page script creates as not trusted (
isTrustedis false). A trusted click or key press comes from the browser itself. One location search ignored a single text insert and answered only to key presses sent one at a time.
How the debugger is limited
- It attaches to one tab at a time: the tab the request came from. There is one session per tab.
- It attaches on the first action that needs it, not when a run starts.
- It detaches after 60 seconds without use.
- Before each key or text it checks that the field it meant to type into is the focused one, and checks again afterwards. The check follows the focused element through open shadow roots. If focus has moved, nothing more is sent, and focus is never moved back for it.
- If the debugger cannot be reached, for example because DevTools is open on that tab, the question is left for you and nothing is written by script instead.
When automation runs
The extension does nothing on a job page until one of these happens:
- You press Autofill application or Run agent in the panel, or start a run from the web app.
- Your Morning auto-run setting starts the day’s run. It is on by default, you can turn it off in Settings. It tries at 9:00 your local time, and again at 12:00 and 15:00 if the morning run did not start. It runs only if the extension’s power switch is on, you are signed in, onboarding is finished and you have sends left for the day. If your queue is empty, it first adds that day’s matched roles to it.
In Copilot, the default, a run ends at the filled form. Nothing is sent without you.
Every permission
- storage: Keeps your settings, the extension’s own state and the on-device model’s status in the browser.
- scripting: Injects the extension’s page reader and form filler into the tab you are applying in.
- tabs: Opens and switches to application tabs and reads their address, so a run knows which page it is on.
- sidePanel: Shows the YouxAI panel next to the page instead of in a popup.
- offscreen: Hosts the on-device model in a hidden extension page, because a background worker cannot run it.
- webNavigation: Lists the frames of a tab so the agent can find an application form that sits inside an embedded frame, and notices page changes in multi-step forms.
- identity: Runs the Google sign-in window through Chrome’s own web auth flow.
- alarms: Wakes the extension on a timer: a once-a-minute local model keep-alive check, the Morning auto-run (9:00, with tries at 12:00 and 15:00), and background scoring.
- debugger: Sends real mouse and keyboard input to the application tab, for forms that ignore values set by a script. Explained below.
Which sites it can see
Application forms live on company sites and hiring platforms that cannot be listed in advance, so the extension asks for access to all sites. Its page script is not injected on a short list of social, video and streaming sites. The web app can talk to the extension from youxai.app only; the store build has no local development addresses.
The on-device model
The model is Gemma 4 E2B, run through Google’s LiteRT-LM inside the extension. It downloads once, about 2 GB, from a public model host (Hugging Face), and the request carries no account or profile data. The model’s results (match scores and short reasons) may sync to your account so the dashboard and extension agree, as the privacy policy says.
What it does on each site
How the agent behaves on each application site, and where it stops for you, is on the autofill guides.
Report something
If you think something here is wrong, or you found a security problem, email founder@youxai.app.