R-02 Copilot & Adoption
Copilot Managed Runtime: Governance for Vibe-Coded Apps

Since 25 September, everybody in your tenant who can open Copilot Studio can build apps. No ticket, no approval, not one line of code. And the switch for this is on by default.
What this means in real life I saw last week at a customer in the Ruhr area. Weekly IT jour fixe, and the head of controlling mentions on the side that he built himself „a small tool”. An app that prepares the current revenue numbers for his team every Monday, directly from the controlling system. Built in Copilot Studio, only with prompts. He did not write a single line of code himself.
The IT lead next to me went a bit pale. She knew nothing about it. There was an app running with access to financial data, shared with his team, and nobody in IT had ever seen it.
Now the good news, and I mean this seriously: the app was not sitting on some private machine. It was running in the Copilot Managed Runtime, so inside their own tenant, and it was visible in the M365 Admin Center the whole time. The bad news: nobody had looked there yet.
And how did the app even get to the controlling system, when out of the box only Microsoft connectors are allowed? Because the tenant still had old Power Platform environments without any connector policy. No policy, nothing forbidden.
That is exactly what this article is about. The runtime brings vibe-coded apps out of the shadows. Controlling them is still your job.
What the Managed Runtime actually changes
Vibe coding means: you describe in natural language what the app should do, and the AI writes the code. Until now, the story usually went on like this: the business user exports the code and hosts it somewhere, sometimes in Azure App Service, sometimes on a private machine. From that moment, IT was blind. Nobody knew which data sources were connected, no DLP rule applied, and compliance documentation did not exist. From a GDPR point of view a nightmare, because the whole data flow runs under the radar.
With the Copilot Managed Runtime, code and execution stay inside the tenant. It has two parts:
- Host: provides the runtime environment inside the M365 tenant boundary.
- SDK and CLI: the npm packages
@microsoft/managed-appsand@microsoft/managed-apps-cliwith the commandms, for everyone who works code-first.
Several roads lead to the runtime: Copilot Studio (on by default, the road our controller took), Copilot Cowork as a chat-based app builder (currently only in the Frontier program), Copilot Code and the CLI (off by default). Microsoft also opens the runtime via SDK for external builder tools, and Lovable is the first named partner. So you build anywhere, but it runs in one place.
End users find the finished apps in their own web portal. You manage everything in the M365 Admin Center under Apps, including inventory, usage numbers and health monitoring with alerts. Every app authenticates through Entra ID. Conditional Access, DLP, advanced connector policies and sharing limits apply automatically. Out of the box, apps can only use 18 Microsoft first-party connectors that authenticate exclusively via Entra ID. And even there, Microsoft closes the back doors: open „Send an HTTP request” actions or „Run script” are blocked by default.
Microsoft called the launch post „Build where you want, run with confidence”. For once this is more than a slogan. The runtime closes a real structural gap that shadow AI has opened over the last two years.
Where the coffee gets bitter
Now the honest part, which my customers hear from me exactly like this.
First: preview is preview. The docs carry the stamp „prerelease, subject to change”, and the supplemental terms of use for previews apply. There is no SLA commitment for production use. Important building blocks like server-side logic and the built-in database are still completely missing in the public preview. This is not a ban on production use. But it is also not an invitation.
Second: visibility is not governance yet. For me the most important point. In the Admin Center you see under „Data & tools” which connectors, data sources and dependencies an app uses. Exact target endpoints, dynamically resolved addresses, actions the app really executed or the permissions per user you do not see there, and Microsoft writes this itself in the FAQ. One more catch: the Admin Center shows you the allow list of the advanced connector policy, but not necessarily the restrictions from classic DLP policies. And when you remove a user’s access to the app, the user still keeps the permissions on the data behind it.
You finally have one counter where everything is served. But you still cannot look into every cup.
Third: the owner leaves, the app stays. Every app is created in the personal developer environment of its maker. What happens when the controller leaves the company? Who becomes the new owner, who maintains the app? For this very everyday case I did not find any process for ownership transfer in the public docs. As an admin you can block and delete, nothing more. This gap you have to close yourself.
Fourth: the bill comes per user. Building in Copilot Studio costs Copilot Credits, and this starts with the first prompt, not only after publishing. Running the app also costs credits, billed per user, unless someone has a Power Apps Premium license. In the preview, users without credit coverage first get a warning, and after 20 app operations or five minutes it is over. When the controlling team opens the app on Monday morning and after five minutes nothing works anymore, the ticket lands with you. Not with the controller.
What you have to do now
The Managed Runtime gives you the place. What you make of it is your job. Seven steps that put you in control of the runtime from day one.
M365 Admin Center > Apps > Overview > Set up app creation spaces which creation paths are active. Copilot Studio is on by default, the CLI is off (you enable it with an environment group rule in the Power Platform Admin Center), and Cowork depends on Frontier onboarding. Under Apps > All apps you then see who has already built something.Already your first visit to the Managed Runtime admin experience initializes the governance. From then on you cannot delete or change an existing „Everyone” catch-all routing rule anymore, and environment routing for the runtime is permanent. If you already have routing rules in Power Platform: talk to your Power Platform admin first.
Copilot > Cost management and clarify which users are covered. Otherwise the app stops in the middle of the Monday meeting.What stays
The Managed Runtime brings vibe-coded apps out of the shadows and back into the tenant. That is real progress. It gives you visibility, but no finished governance. Roles, approval paths, costs and lifecycle you have to set up yourself, and you should do it now, while the number of apps is still manageable.
The Managed Runtime does not take the responsibility off your shoulders. It just finally gives you a place where you can take it. The coffee machine now stands in the server room instead of the intern’s home office: you see who uses how many beans. If it is the right roast, you still have to taste yourself.
- Check under Apps and Overview which creation paths are active and look at the inventory. Clarify first what the initialization does to your routing rules.
- Limit building with Entra ID security groups and control sharing in the environment group.
- Define a review step before an app moves from the personal sandbox into the department.
- Use your existing DLP and connector policies and check the effective result in the Power Platform Admin Center.
- Create a spending policy for running apps before the first users get locked out.
- Build your own lifecycle process with owner, backup, review cycle and shutdown criterion, and explain the new rules to your business users instead of only forbidding things.
Are you already experimenting with the Managed Runtime, or did you find similar shadow AI cases in your tenant? Write me on LinkedIn. I am curious which governance gaps you found first in practice.
#EspressoM365Fusion
