Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
5850862
OpenHound Entra Agents docs
martinsohn Oct 7, 2026
bb1f94a
Update collector-limitations.mdx
martinsohn Oct 7, 2026
24fe019
Fix Cypher: AZAgent - Lists all Entra Agent relationships
martinsohn Oct 7, 2026
9a33e02
cr: Fix broken links
martinsohn Oct 8, 2026
8364238
Add shared beta notice to Entra Agents documentation
martinsohn Oct 8, 2026
4fe0e55
fix(entra-agents): export all Power Platform environment pages
martinsohn Oct 8, 2026
bdeb130
Simplify collector limitations introduction and headings
martinsohn Oct 8, 2026
5c27e67
Improve collector limitations readability
martinsohn Oct 8, 2026
834712a
Clarify Entra Agents collector data coverage
martinsohn Oct 8, 2026
47e2814
Describe Entra Agents collection options
martinsohn Oct 8, 2026
26959af
Highlight AzureHound prerequisite in Entra Agents overview
martinsohn Oct 8, 2026
a31faff
Improve collector overview
martinsohn Oct 8, 2026
5c6e536
Remove numbering from Entra Agents provisioning headings
martinsohn Oct 8, 2026
15880ac
Nest manual provisioning tasks under their route heading
martinsohn Oct 8, 2026
7cbf8d0
Use step components and introductions in provisioning guide
martinsohn Oct 8, 2026
f060d3c
Present base provisioning routes in tabs with shared setup below
martinsohn Oct 8, 2026
c6ef8d9
Link to Microsoft provisioning instructions and retain collector requ…
martinsohn Oct 8, 2026
0d189f7
Improve provision-identity.mdx readibility/flow
martinsohn Oct 8, 2026
c90a83f
Split Entra Agents permissions and collection documentation
martinsohn Oct 8, 2026
b6aab8d
Update collector-limitations.mdx
martinsohn Oct 8, 2026
f8f1c35
docs(entra-agents): Normalize provisioning script line endings #460
martinsohn Oct 8, 2026
4e4b749
docs(entra-agents): Fix custom role JSON examples #460
martinsohn Oct 8, 2026
95c2ef5
docs(entra-agents): Remove directory paths from research references #460
martinsohn Oct 8, 2026
c5fd3b7
docs(entra-agents): Fix optional registration link anchor #460
martinsohn Oct 8, 2026
50cf8ec
docs(entra-agents): Align credential and reader role terminology #460
martinsohn Oct 8, 2026
e9542a9
docs(entra-agents): Remove outdated provisioning screenshots #460
martinsohn Oct 8, 2026
6ccae01
docs(entra-agents): Remove redundant inventory scope review step #460
martinsohn Oct 8, 2026
0d89a00
docs(entra-agents): Clean up wording and documentation style #460
martinsohn Oct 8, 2026
5863fff
docs(entra-agents): Rename collector overview page #460
martinsohn Oct 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# export-power-platform-environments.ps1 — export the static environment fallback
# consumed by the OpenHound Entra ID collector.
#
# This script is read-only. Run it as a Global Administrator or Power Platform
# Administrator signed in to Azure CLI:
#
# az login --tenant <tenant-guid> `
# --scope https://api.powerplatform.com/.default
# ./export-power-platform-environments.ps1 `
# -OutputPath .dlt/power-platform-environments.json
#
# The output includes every visible environment. Review and remove environments
# outside the collection scope before configuring the file in the collector.

[CmdletBinding()]
param(
[string]$OutputPath
)

$ErrorActionPreference = "Stop"

$azCommand = Get-Command az -ErrorAction SilentlyContinue
if (-not $azCommand) {
throw "Azure CLI ('az') is not installed or not on PATH."
}

$accountJson = (& az account show --output json) -join [Environment]::NewLine
if ($LASTEXITCODE -ne 0) {
throw "Not signed in to Azure CLI."
}
$account = $accountJson | ConvertFrom-Json

$apiUrl = "https://api.powerplatform.com/environmentmanagement/environments?api-version=2022-03-01-preview"
$environments = [Collections.Generic.List[object]]::new()
$azUsesBatch = $azCommand.Source -match '\.(cmd|bat)$'
do {
# Windows batch launchers need explicit quotes around URLs containing '&'.
$requestUrl = if ($azUsesBatch) { '"' + $apiUrl + '"' } else { $apiUrl }
$environmentJson = (& az rest `
--method get `
--resource https://api.powerplatform.com `
--url $requestUrl `
--output json) -join [Environment]::NewLine

if ($LASTEXITCODE -ne 0) {
throw @"
Modern Power Platform environment discovery failed. No inventory was written.
Refresh the resource-specific sign-in and retry:
az login --tenant $($account.tenantId) --scope https://api.powerplatform.com/.default
"@
}

$response = $environmentJson | ConvertFrom-Json
foreach ($environment in $response.value) {
$environments.Add($environment)
}
$apiUrl = $response.'@odata.nextLink'
} while ($apiUrl)
$inventory = @(
$environments | ForEach-Object {
[ordered]@{
environment_id = $_.id
display_name = if ($_.displayName) { $_.displayName } else { $_.id }
has_dataverse = $null -ne $_.dataverseId -and $null -ne $_.url
dataverse_url = $_.url
}
} | Sort-Object display_name
)

$inventoryJson = ConvertTo-Json -InputObject $inventory -Depth 4
if ($OutputPath) {
$resolvedOutputPath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($OutputPath)
$parentDirectory = Split-Path -Parent $resolvedOutputPath
if (-not (Test-Path -LiteralPath $parentDirectory -PathType Container)) {
throw "Output directory does not exist: $parentDirectory"
}
[System.IO.File]::WriteAllText(
$resolvedOutputPath,
$inventoryJson,
[System.Text.UTF8Encoding]::new($false)
)
} else {
$inventoryJson
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"properties": {
"roleName": "OpenHound Entra Agents ARM Reader",
"description": "Read-only ARM access required by the OpenHound Entra Agents Foundry collector.",
"assignableScopes": [
"/providers/Microsoft.Management/managementGroups/<tenantRootGroupId>"
],
"permissions": [
{
"actions": [
"Microsoft.Resources/subscriptions/read",
"Microsoft.CognitiveServices/accounts/read",
"Microsoft.CognitiveServices/accounts/projects/read",
"Microsoft.CognitiveServices/accounts/projects/connections/read",
"Microsoft.MachineLearningServices/workspaces/read",
"Microsoft.Authorization/roleAssignments/read"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"properties": {
"roleName": "OpenHound Entra Agents Foundry Agent Reader",
"description": "Read Foundry agents through the AI Services data plane; Azure defines this action as reading agents, threads, and messages.",
"assignableScopes": [
"/subscriptions/<subscriptionId>"
],
"permissions": [
{
"actions": [],
"notActions": [],
"dataActions": [
"Microsoft.CognitiveServices/accounts/AIServices/agents/read"
],
"notDataActions": []
}
]
}
}
Loading
Loading