All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Re-enabled
a365 create-instancecommand (previously deprecated) — creates agent identity, agent user, and assigns licenses in a single command. The custom client app now requires theUser.ReadWrite.Alldelegated permission for user creation and license assignment; existing users may need to update admin consent on their client app. Agent365.Observability.OtelWritegranted to all provisioned agent identities on the Observability API as both a delegated permission (OAuth2 grant) and an application permission (S2S app role assignment), enabling agents to write OpenTelemetry data to the Agent 365 observability service- S2S app role assignment support in
a365 setup permissionsanda365 setup admin— the CLI now automatically grants application-type (appRoleAssignments) permissions on the blueprint service principal when aResourcePermissionSpecdefinesAppRoleScopes. Global Administrator is required for S2S grants; non-admin users receive actionable PowerShell fallback instructions ChannelMessage.Read.AllandChannelMessage.Sendadded to default blueprint Microsoft Graph delegated scopes (agentIdentityScopes)Files.ReadWrite.All,ChannelMessage.Read.All, andChannelMessage.Sendadded to default blueprint Microsoft Graph application scopes (agentApplicationScopes)- Server-driven notice system: security advisories and critical upgrade prompts are displayed at startup when a maintainer updates
notices.json. Notices are suppressed once the user upgrades past the specifiedminimumVersion. Results are cached locally for 4 hours to avoid network calls on every invocation. a365 cleanup azure --dry-run— preview resources that would be deleted without making any changes or requiring Azure authenticationAppServiceAuthRequirementCheck— validates App Service deployment token beforea365 deploybegins, catching revoked grants (AADSTS50173) earlya365 setup admin— new command for Global Administrators to complete tenant-wide AllPrincipals OAuth2 permission grants aftera365 setup allhas been run by an Agent ID Admin
a365 publishupdates manifest IDs, createsmanifest.zip, and prints concise upload instructions for Microsoft 365 Admin Center (Agents > All agents > Upload custom agent). Interactive prompts only occur in interactive terminals; redirect stdin to suppress them in scripts.
A365CreateInstanceRunnersponsor handling: sponsor is now required (Graph API rejects requests without one) — removed fallback that silently stripped the sponsor on retry, which causedBadRequesterrors- Intermittent
ConnectionResetError (10054)failures on corporate networks with TLS inspection proxies (Zscaler, Netskope) — Graph and ARM API calls now use direct MSAL.NET token acquisition instead ofaz account get-access-tokensubprocesses, bypassing the Python HTTP stack that triggered proxy resets (#321) a365 cleanupblueprint deletion now succeeds for Global Administrators even when the blueprint was created by a different user- Admin consent URL for the Observability API used the non-existent scope
Maven.ReadWrite.All(AADSTS650053) — replaced with the correct delegated scopeAgent365.Observability.OtelWrite AppRoleAssignment.ReadWrite.All(admin-only) was incorrectly included inRequiredPermissionGrantScopes, causing it to be requested on non-admin paths (a365 deploy,setup permissions) — moved to a dedicatedRequiredS2SGrantScopesconstant used only on Global Administrator pathsa365 setup allno longer times out for non-admin users — the CLI immediately surfaces a consent URL to share with an administrator instead of waiting for a browser prompta365 setup allrequests admin consent once for all resources instead of prompting once per resource- Browser and WAM authentication blocked by Conditional Access Policy (AADSTS53003, AADSTS53000) now automatically falls back to device code flow (#294)
- macOS/Linux: device code fallback when browser authentication is unavailable (#309)
- Linux: MSAL fallback when PowerShell
Connect-MgGraphfails in non-TTY environments (#309) - Admin consent polling no longer times out after 180s — blueprint service principal now resolved with correct MSAL token (#309)
ConfigFileNotFoundExceptionnow derives fromFileNotFoundExceptionso existing catch sites continue to work (#309)
1.1.0 - 2026-02
- Custom blueprint permissions configuration and management — configure any resource's OAuth2 grants and inheritable permissions via
a365.config.json(#298) setup requirementssubcommand with per-category checks: PowerShell modules, location, client app configuration, Frontier Program enrollment (#293)setup permissions copilotstudiosubcommand for Power PlatformCopilotStudio.Copilots.Invokepermission (#298)- Persistent MSAL token cache to reduce repeated WAM login prompts on Windows (#261)
- Auto-detect endpoint name from project settings; globally unique names to prevent accidental collisions (#289)
.NETruntime roll-forward — CLI now works on .NET 9 and later without reinstalling (#276)- Mock tooling server MCP protocol compliance for Python and Node.js agents (#263)
- Prevent
InternalServerErrorloop when--update-endpointfails on create (#304) - Correct endpoint name derivation for
needsDeployment=falsescenarios (#296) - Browser auth falls back to device code on macOS when WAM/browser is unavailable (#290)
PublishCommandnow returns non-zero exit code on all error paths (#266)- Azure CLI Graph token cached across publish command Graph API calls (#267)
- PowerShell 5.1 install compatibility and macOS auth testability improvements (#292)
- MOS token cache timezone comparison bug in
TryGetCachedToken(#278) - Location config validated before endpoint registration and deletion (#281)
CustomClientAppIdcorrectly set inBlueprintSubcommandto fix inheritable permissions (#272)- Endpoint names trimmed of trailing hyphens to comply with Azure Bot Service naming rules (#257)
- Python projects without
pyproject.tomlhandled ina365 deploy(#253)
1.0.0 - 2025-12
a365 setup blueprint— creates and configures an Agent Identity Blueprint in Azure ADa365 setup permissions mcp/bot— configures OAuth2 grants and inheritable permissionsa365 deploy— multi-platform deployment (.NET,Node.js,Python) with auto-detectiona365 config init— initialize project configurationa365 cleanup— remove Azure resources and blueprint configuration- Interactive browser authentication via MSAL with WAM on Windows
- Microsoft Graph operations using PowerShell
Microsoft.Graphmodule - Admin consent polling with automatic detection