Azure Policy definitions, initiatives, RBAC built-in roles, Microsoft Entra ID roles and API permissions, resource types, resource provider operations and policy aliases in your Bicep, ARM, Terraform, PowerShell and YAML files become Ctrl+clickable links and hover cards that lead to the matching page on AzAdvertizer.net.

What is recognised
/providers/Microsoft.Authorization/policyDefinitions/<id> and bare policy GUIDs; ALZ, AMBA and community policy names below a management group scope → Policy definition page
/providers/Microsoft.Authorization/policySetDefinitions/<id> and bare initiative GUIDs → Initiative page
/providers/Microsoft.Authorization/roleDefinitions/<id> and bare role GUIDs → RBAC built-in role page
Microsoft.KeyVault/vaults@2024-11-01, "type": "Microsoft.KeyVault/vaults", resource ids (.../providers/Microsoft.KeyVault/vaults/myvault) → Resource type page (the hover notes when the file's API version is older than the latest)
Microsoft.Compute/virtualMachines/write, Microsoft.KeyVault/vaults/secrets/getSecret/action → Resource provider operation (granting roles, policies)
Microsoft.Compute/virtualMachines/storageProfile.osDisk.managedDisk.id, Microsoft.Network/networkSecurityGroups/securityRules[*].access → Policy alias lookup
- Entra ID role template ids (
62e90394-69f5-4237-9190-012177145e10) → Entra ID role page
- API permission ids (
df021288-bdef-4463-88db-98f22de89214) and quoted names ("User.Read.All") → Entra ID API permission page
- First-party application ids (
00000003-0000-0000-c000-000000000000) → API permissions of that application
Bare GUIDs are only linked when the local index knows them, so random GUIDs stay untouched. Wildcards (Microsoft.Compute/*) are not linked.


Languages by default: Bicep, Bicep parameters, JSON, JSONC, ARM template, Terraform, PowerShell, YAML, Azure Pipelines. Change the list with azadvertizer.languages.
Commands
- AzAdvertizer: Open identifier at cursor in AzAdvertizer (also in the editor context menu)
- AzAdvertizer: Refresh the lookup index now
- AzAdvertizer: Show lookup index info
How it works, privacy
The extension ships with a lookup index (data/index.json: names, categories, effects, versions, API versions, built from the same files the AzAdvertizer.net pages load in the browser) and resolves everything locally. Links need no network at all.
Once a day it checks AzAdvertizer.net for a newer index and keeps a local copy. Turn this off with azadvertizer.index.autoRefresh. Nothing else is sent, and the extension has no telemetry. Links carry utm_source=vscode so the site can count visits from the extension; azadvertizer.utm switches that off.
Works in the desktop editor and in the web editor (vscode.dev, github.dev).
Settings
azadvertizer.site (default https://www.azadvertizer.net): Site the links point to and the index is refreshed from
azadvertizer.languages (default see above): Language ids with links and hovers
azadvertizer.links.enabled (default true): Document links (Ctrl+click)
azadvertizer.hover.enabled (default true): Hover cards
azadvertizer.features (default all true): Per kind: policy, initiative, role, entraRole, apiPermission, app, resourceType, operation, alias
azadvertizer.index.autoRefresh (default true): Background index refresh
azadvertizer.index.refreshHours (default 24): Hours between refresh checks
azadvertizer.maxFileSizeKB (default 2048): Larger files get no document links (hovers still work)
azadvertizer.utm (default true): utm_source=vscode on the links
Development
npm install
npm run index # data/index.json from the files the site's pages load (node scripts/build-index.js [--site <url>] [--offline])
npm run build # dist/extension.js (desktop) and dist/web/extension.js (web) via esbuild
npm test # test/core-test.js (detection, resolution, hovers) and test/extension-test.js (activation against a fake VS Code API)
npm run package # the .vsix (vsce)
npm run media # README images from VS Code web (needs: npx @vscode/test-web --browser=none --quality stable --port 3011 --extensionDevelopmentPath . test/samples)
F5 in VS Code runs the extension (Run Extension / Run Web Extension) with the samples in test/samples.
License
MIT