{"id":2147,"date":"2026-09-17T14:40:24","date_gmt":"2026-09-17T18:40:24","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/powerplatform\/?p=2147"},"modified":"2026-09-17T14:40:24","modified_gmt":"2026-09-17T18:40:24","slug":"power-platform-cli-%e2%9d%a4%ef%b8%8f-power-platform-api","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powerplatform\/power-platform-cli-%e2%9d%a4%ef%b8%8f-power-platform-api\/","title":{"rendered":"Power Platform CLI \u2764\ufe0f Power Platform API"},"content":{"rendered":"<p>Historically, Power Platform administrators and developers have automated management tasks through a mix of tools. A capability might exist in the admin center, use a different name in PowerShell, have a custom shape in a connector, or not yet be available in the command line. Each tool could be valuable, but moving between them often meant relearning commands, payloads, authentication patterns, and coverage.<\/p>\n<p>Last year, we shared how <a href=\"https:\/\/devblogs.microsoft.com\/powerplatform\/power-platform-api-and-sdks-from-ux-first-to-api-first\/\">Power Platform is moving from a UX-first model to an API-first<\/a> ecosystem. Today, we&#8217;re bringing one of the clearest results of that strategy directly to the terminal: auto-generated Power Platform API command groups in <a href=\"https:\/\/learn.microsoft.com\/en-us\/power-platform\/developer\/cli\/introduction?tabs=windows\">Microsoft Power Platform CLI<\/a> are now available in public preview.<\/p>\n<h2>One specification built monthly<\/h2>\n<p>The Power Platform API is the customer-facing management plane for Power Platform. Instead of implementing each automation surface independently, we define public management capabilities once in the API specification and generate tools on top of that contract.<\/p>\n<p>That source already drives the <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.PowerPlatform.Management\/\">Microsoft.PowerPlatform.Management SDK for .NET<\/a>, the <a href=\"https:\/\/pypi.org\/project\/powerplatform-management\/\">powerplatform-management SDK for Python<\/a>, and the <a href=\"https:\/\/learn.microsoft.com\/en-us\/connectors\/powerplatformadminv2\/\">Power Platform for Admins V2 connector<\/a>. With this public preview, it also generates PAC CLI command groups. API namespaces become top-level pac command groups, and API operations become discoverable commands with consistent help and inputs.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/Screenshot-2026-09-15-142312.webp\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/Screenshot-2026-09-15-142312-300x132.webp\" alt=\"Screenshot 2026 09 15 142312 image\" width=\"80%\" class=\"alignnone size-medium wp-image-2148\" srcset=\"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/Screenshot-2026-09-15-142312-300x132.webp 300w, https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/Screenshot-2026-09-15-142312-768x339.webp 768w, https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/Screenshot-2026-09-15-142312.webp 855w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h2>Why generated commands matter<\/h2>\n<p>Generation is more than a faster way to create commands. It changes how quickly and consistently management capabilities can reach the tools you use.<\/p>\n<ul>\n<li><strong>Consistent coverage<\/strong> The CLI is designed to grow with the Power Platform API, reducing the lag and uneven coverage that can occur when each tool is implemented by hand. <\/li>\n<li><strong>A predictable command model<\/strong> Namespaces and operations follow a consistent structure, so discovering a new area feels familiar: pac <namespace> help, followed by the operation you need. <\/namespace><\/li>\n<li><strong>Use the tool that fits<\/strong> Move between REST, .NET, Python, Power Automate, and the CLI without changing the underlying management model. <\/li>\n<li><strong>No separate authentication setup<\/strong> Generated commands use your active pac auth profile, including the tenant and cloud you already selected. <\/li>\n<li><strong>Agentic management without capability cliffs<\/strong> GitHub Copilot and Anthropic&#8217;s Claude Code already use PAC CLI as an execution harness. Broader API coverage lets agents stay in one predictable tool instead of stopping when a required operation exists only in another surface. <\/li>\n<\/ul>\n<h3>Critical scenarios unblocked<\/h3>\n<p>As features related to our business applications and low-code offerings rapidly evolve, we are making a concerted effort to ship API-first. This supports a tighter feedback loop before we bring capabilities to the Power Platform admin center. With the ease of use of the CLI, this now unlocks several new scenarios for Dynamics 365 finance and operations apps for managing versioning and updates of the software, Copilot Studio agent ownership reassignment and quarantine, as well as Copilot credit allocations and whether to draw from the tenant capacity pools.<\/p>\n<p>In addition, we will update our SDKs and CLI now every month as we have done consistently the past two years. However, new APIs can be released daily and so we have followed in the footsteps of Azure CLI by providing a capability to get a token for Power Platform API so that you and your agents can invoke endpoints that are hot off the press even before they become available in the CLI:<\/p>\n<table>\n<tr>\n<td>\n<p>\n        pac auth token\n      <\/p>\n<\/td>\n<\/tr>\n<\/table>\n<h2>More than 200 commands across 15 command groups<\/h2>\n<p>At public-preview launch, the generated experience spans 15 Power Platform API namespaces and more than 200 commands. The command groups cover scenarios ranging from environment lifecycle and licensing to governance, Power Pages, Copilot Studio, and role-based access control.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/command-gen-numbers.webp\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/command-gen-numbers-300x48.webp\" alt=\"command gen numbers image\" width=\"90%\" class=\"alignnone size-medium wp-image-2150\" srcset=\"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/command-gen-numbers-300x48.webp 300w, https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/command-gen-numbers-1024x165.webp 1024w, https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/command-gen-numbers-768x123.webp 768w, https:\/\/devblogs.microsoft.com\/powerplatform\/wp-content\/uploads\/sites\/79\/2026\/09\/command-gen-numbers.webp 1257w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<table width=\"90%\">\n<thead>\n<tr>\n<th>\n<p>\n          <strong>Command group<\/strong>\n        <\/p>\n<\/th>\n<th>\n<p>\n          <strong>Commands<\/strong>\n        <\/p>\n<\/th>\n<th>\n<p>\n          <strong>Representative command<\/strong>\n        <\/p>\n<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\n<p>\n          pac analytics\n        <\/p>\n<\/td>\n<td>\n<p>\n          6\n        <\/p>\n<\/td>\n<td>\n<p>\n          get-recommendations\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac app-management\n        <\/p>\n<\/td>\n<td>\n<p>\n          4\n        <\/p>\n<\/td>\n<td>\n<p>\n          install-application-package\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac authorization\n        <\/p>\n<\/td>\n<td>\n<p>\n          10\n        <\/p>\n<\/td>\n<td>\n<p>\n          list-role-definitions\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac connectivity\n        <\/p>\n<\/td>\n<td>\n<p>\n          3\n        <\/p>\n<\/td>\n<td>\n<p>\n          list-connectors\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac copilot-studio\n        <\/p>\n<\/td>\n<td>\n<p>\n          11\n        <\/p>\n<\/td>\n<td>\n<p>\n          reassign-copilot-agent\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac dynamics\n        <\/p>\n<\/td>\n<td>\n<p>\n          2\n        <\/p>\n<\/td>\n<td>\n<p>\n          get-fin-ops-maintenance-settings\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac environment-management\n        <\/p>\n<\/td>\n<td>\n<p>\n          41\n        <\/p>\n<\/td>\n<td>\n<p>\n          list-environment-groups\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac governance\n        <\/p>\n<\/td>\n<td>\n<p>\n          20\n        <\/p>\n<\/td>\n<td>\n<p>\n          list-rule-based-policies\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac licensing\n        <\/p>\n<\/td>\n<td>\n<p>\n          47\n        <\/p>\n<\/td>\n<td>\n<p>\n          list-billing-policies\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac power-apps\n        <\/p>\n<\/td>\n<td>\n<p>\n          2\n        <\/p>\n<\/td>\n<td>\n<p>\n          get-admin-apps\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac power-automate\n        <\/p>\n<\/td>\n<td>\n<p>\n          3\n        <\/p>\n<\/td>\n<td>\n<p>\n          list-cloud-flows\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac power-pages\n        <\/p>\n<\/td>\n<td>\n<p>\n          35\n        <\/p>\n<\/td>\n<td>\n<p>\n          create-website\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac resource-query\n        <\/p>\n<\/td>\n<td>\n<p>\n          1\n        <\/p>\n<\/td>\n<td>\n<p>\n          query-resources\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac user-management\n        <\/p>\n<\/td>\n<td>\n<p>\n          1\n        <\/p>\n<\/td>\n<td>\n<p>\n          apply-admin-role\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>\n          pac workflows-agent\n        <\/p>\n<\/td>\n<td>\n<p>\n          16\n        <\/p>\n<\/td>\n<td>\n<p>\n          get-flows\n        <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Start with the interface you already know<\/h2>\n<p>If you already use PAC CLI, there is no separate preview package or feature flag to configure. Install or update the latest CLI, use your existing authentication profile, and explore the generated groups alongside the commands you already know.<\/p>\n<p><strong>Install or update Power Platform CLI<\/strong><\/p>\n<table>\n<tr>\n<td>\n<p>\n        # Windows launcher <br \/> pac install latest <br \/> pac use latest <\/p>\n<p> # .NET global tool <br \/> dotnet tool update &#8211;global Microsoft.PowerApps.CLI.Tool\n      <\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><strong>Create or select an authentication profile<\/strong><\/p>\n<table>\n<tr>\n<td>\n<p>\n        pac auth create <br \/> pac auth list <br \/> pac auth select &#8211;index <n> <\/n>\n      <\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><strong>Discover the generated command groups<\/strong><\/p>\n<table>\n<tr>\n<td>\n<p>\n        pac help <br \/> pac environment-management help <br \/> pac governance help <br \/> pac authorization help\n      <\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><strong>Run a command against the tenant in your active profile<\/strong><\/p>\n<table>\n<tr>\n<td>\n<p>\n        pac environment-management list-environment-groups <br \/> pac governance list-rule-based-policies <br \/> pac authorization list-role-definitions\n      <\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p>The same pattern works across the preview. For example, you can inspect Power Apps and cloud flows, manage environment lifecycle operations, review licensing resources, administer Power Pages sites, and query role definitions and scoped assignments.<\/p>\n<h2>Agentic management without capability cliffs<\/h2>\n<p>A command line is valuable for more than interactive administration. It is easy to compose in scripts, pipeline steps, runbooks, and operational playbooks. It is also a natural execution surface for AI-assisted development: agents can read command help, construct a command, explain the effect, and reuse the same pattern across namespaces.<\/p>\n<p>We already see developers using GitHub Copilot and Anthropic&#8217;s Claude Code to drive PAC CLI today. These harnesses are most effective when the execution surface is predictable and complete. If an agent can discover an environment but must switch tools, authentication models, or payload shapes to manage its lifecycle, the workflow reaches a capability cliff.<\/p>\n<p>Expanding PAC CLI to reflect the Power Platform API helps remove those cliffs. An agent can remain in one authenticated, discoverable surface as it identifies a resource, plans an action, executes the command, and verifies the result. As the API grows, generated commands give human operators and agents the same expanding vocabulary for managing the platform.<\/p>\n<h2>Join the journey<\/h2>\n<p>Whether you&#8217;re an administrator building a repeatable runbook, a professional developer creating an automation pipeline, or a team using coding agents to accelerate operations, this public preview is for you.<\/p>\n<p>Update Power Platform CLI, run pac help, and try a generated command group &#8211; directly or with GitHub Copilot or Claude Code guiding the workflow. Tell us which scenarios work well, where command help or output can improve, and which Power Platform API capabilities you want to automate next.<\/p>\n<p><strong>Get started:<\/strong> <a href=\"https:\/\/learn.microsoft.com\/power-platform\/developer\/cli\/introduction\">Install and configure Microsoft Power Platform CLI<\/a><\/p>\n<p><strong>Explore commands:<\/strong> <a href=\"https:\/\/learn.microsoft.com\/power-platform\/developer\/cli\/reference\/\">Power Platform CLI command reference<\/a><\/p>\n<p><strong>Understand the strategy:<\/strong> <a href=\"https:\/\/aka.ms\/programmabilityExtensibilityHome\">Power Platform programmability and extensibility<\/a><\/p>\n<p><strong>Follow monthly releases:<\/strong> <a href=\"https:\/\/learn.microsoft.com\/power-platform\/admin\/programmability-whats-new-changed\">What&#8217;s new or changed<\/a><\/p>\n<p><strong>Share feedback:<\/strong> <a href=\"https:\/\/github.com\/microsoft\/powerplatform-build-tools\/discussions\">Power Platform Build Tools discussions<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Historically, Power Platform administrators and developers have automated management tasks through a mix of tools. A capability might exist in the admin center, use a different name in PowerShell, have a custom shape in a connector, or not yet be available in the command line. Each tool could be valuable, but moving between them often [&hellip;]<\/p>\n","protected":false},"author":194576,"featured_media":2148,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[26,1],"tags":[],"class_list":["post-2147","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","category-powerplatform"],"acf":[],"blog_post_summary":"<p>Historically, Power Platform administrators and developers have automated management tasks through a mix of tools. A capability might exist in the admin center, use a different name in PowerShell, have a custom shape in a connector, or not yet be available in the command line. Each tool could be valuable, but moving between them often [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/posts\/2147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/users\/194576"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/comments?post=2147"}],"version-history":[{"count":1,"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/posts\/2147\/revisions"}],"predecessor-version":[{"id":2166,"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/posts\/2147\/revisions\/2166"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/media\/2148"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/media?parent=2147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/categories?post=2147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powerplatform\/wp-json\/wp\/v2\/tags?post=2147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}