Azure Helper is a hosted web app that reads your real tenant to teach. It also ships as a browser extension that opens the same app in a side panel and adds a DevTools capture workbench for Microsoft admin portal calls. Either way, tenant execution stays read-only: the app uses delegated read scopes for supported Graph reads, and captured portal calls are evidence and export material unless you run them yourself elsewhere.
The docked side panel uses each browser's native panel API. The DevTools panel uses the browser's inspected-tab Network stream to import HAR history, watch live calls, expand Graph batches, and generate snippets. Read-only tenant scope keeps store review and enterprise allow-listing straightforward.
The workbench observes requests from the inspected tab. It does not click buttons, scrape DOM state, or bypass admin consent.
The DevTools panel writes captures to browser extension storage so the side panel can explain them. Subscription and tenant permissions still come from the hosted app.
Unknown captures can be loaded, exported, or sent to Guide. The backend still enforces the approved read-only operation catalog, and you control Graph read consent in-app.
PKCE public-client flow — there's no client secret to extract, because the extension never holds one. App-only access (Team tier) is brokered server-side.
The browser keeps only the app session. Tenant data reads are brokered by the backend using read-only permissions and stop when the app consent or link is removed.
Prompts, keys and orchestration live in the backend — never shipped in the extension — alongside the read-audit and entitlement checks.
A read-only extension with narrow host permissions is trivial for admins to approve via Chrome / Edge enterprise policy.
Reads are used to render your answer and aren't retained as tenant records. Only learning progress & usage are stored per account.
No fragile DOM scraping or click automation. The DevTools workbench observes network calls from the inspected tab, then turns captured Graph and portal API requests into readable/exportable snippets.
Because the worst it can do is read.