Configuring Copilot Studio protection
This is the task-oriented guide to switching the integration on. For what the control does, what data it sees, and what a blocked tool call looks like to a user, read Microsoft Copilot Studio first.
Configuration spans three places and the order matters:
- Beak AI Security — register the caller and choose how verdicts behave.
- Microsoft Entra — create an application and a federated credential.
- Power Platform admin center — nominate Beak, per environment.
Note: Do them in that order. Saving in Power Platform calls Beak's
/validateendpoint and fails if the Entra application is not yet registered in Beak. The error Microsoft shows — There was a problem connecting to the protection provider — does not say that is the reason.
Before you start
You need:
- Beak — the
settings:updatepermission in AI Security, and the integration enabled for your Beak environment. If the panel reports that the public base URL is not set, a Beak operator has to set it before the onboarding strings can be computed. - Microsoft Entra — permission to register an application in the tenant that will call Beak.
- Power Platform — the Power Platform Administrator role.
- At least one active policy that applies to API traffic. Without one, nothing will ever be blocked. See Choosing the policy.
Step 1 — Register the caller in Beak
Go to Integrations → Microsoft Copilot Studio (see Integrations) and enter two values from the customer's Entra tenant:
| Field | Where it comes from | What Beak does with it |
|---|---|---|
| Directory (tenant) ID | Entra ID → Overview | Compared against the token's tid claim on every request |
| Application (client) ID | The app registration from Step 2 | Compared against the token's azp / appid claim |
| Name | Your own choice | Reference only. Not used for authorisation |
Both identifiers must be GUIDs; Beak validates them before saving.
Select Register and generate endpoint. Beak mints the endpoint URL and shows the strings the next step needs.
Note: Registration starts in observe mode. Every tool call is evaluated and would-be blocks are recorded, but nothing is blocked until you switch enforcement on. This is deliberate — see Roll out in stages.
Because authentication uses Federated Identity Credentials, there is no secret at any point — nothing to store, nothing to rotate. The pair of identifiers above is the allowlist: a token from any other tenant or application is rejected even against the correct URL.
Step 2 — Create the Entra application
After registering, the panel shows four values. Copy them; do not retype them.
| Value | Used for |
|---|---|
| Endpoint link | Both the federated credential subject and the Power Platform Endpoint link |
| Federated credential — Issuer | The credential's Issuer field in Entra |
| Federated credential — Explicit subject identifier | The credential's Value field in Entra |
| PowerShell command | Microsoft's script, which does the whole step in one go |
The scripted path is recommended, because it computes the encoded values for you. Run the command shown in the panel; note the App ID it prints, and put that App ID into the Application (client) ID field from Step 1 if you have not already.
If you register the application by hand, take the Issuer and subject from the panel rather than assembling them. The subject encodes the tenant GUID in .NET byte order and the endpoint URL as unpadded base64url, and a single wrong character produces a value that looks correct and never matches. That one detail accounts for most failed setups.
Note: The endpoint URL is immutable once the customer saves in Power Platform. It is encoded into the federated credential subject and Entra matches it exactly — so changing it later, even by a trailing slash, breaks their configuration silently. Because the protocol fails open, their agents then resume invoking tools unchecked with no error shown anywhere in Power Platform.
Step 3 — Nominate Beak in Power Platform
Full steps are in Microsoft Copilot Studio. In brief: Security → Threat detection → Additional threat detection, select the environment, Set up, tick the data-sharing box, enter the App ID and the Endpoint link, choose Set error behavior, and Save.
Two things to carry back to Beak:
- Whichever Set error behavior was chosen. Beak cannot read it, and its own timeout behaviour should agree — see If Beak cannot answer in time.
- Confirmation that Save succeeded. The Beak panel then shows Reached from Power Platform, which is the only health signal the customer's setup flow gives Beak.
Configuration is per environment. There is no tenant-wide switch, and a newly created environment is not protected until someone turns this on for it.
Choosing the policy
Two different things, in two different places:
- The policy itself is defined under Policies — its rules, categories, and actions. Nothing about Copilot Studio lives there.
- Which policy governs Copilot Studio tool calls is the Policy field in this panel.
Leave the field on All active policies for API traffic and every eligible policy is evaluated. Pin one and it becomes solely authoritative for this surface.
Only policies of kind api_guardrail or hybrid are eligible, because a tool call is API-shaped traffic. The dropdown offers only those, so an ineligible policy cannot be selected by mistake.
Note: A policy written for another surface — an
endpoint_dlppolicy for the browser extension, for example — is visible in the Policies list and looks like a valid choice, but it resolves to nothing here. If a previously pinned policy becomes ineligible, because it was deactivated or its kind changed, the panel says so and Beak evaluates every eligible policy instead. Tool calls are still inspected, but not by the policy named in the field, so fix it rather than leaving it.
If the panel reports that no policy applies to API traffic, nothing will be blocked no matter what else is configured. Create one before enforcing.
Narrowing to specific environments
Power Platform environments limits the integration to named environment IDs — one per line, or comma-separated. Leave it empty to cover all of them.
A tool call from any other environment is answered allow without being evaluated, and recorded as out of scope, so "never looked at" stays distinguishable from "looked at and found nothing".
Note: The environment ID arrives in the request body, not in the token, so it is a scoping filter and never a security boundary. Authorisation is the tenant and application from Step 1.
How verdicts are applied
| Setting | Default | What it decides |
|---|---|---|
| Enforcement | Observe | Whether a computed block is actually applied |
| Redaction policies | Block the tool call | What to do when a policy says "allow this with sensitive values removed" |
| If Beak cannot answer in time | Allow the tool to run | What Beak answers when evaluation approaches its internal deadline |
Redaction policies
This protocol's answer is a boolean, so a tool argument can be blocked but never rewritten. A redaction policy therefore has no faithful representation here.
Blocking is the default because the alternative sends the tool call with the sensitive value intact while the policy still reports as having fired — a control that appears to work and does not. Allowing is available as a deliberate, recorded choice.
If Beak cannot answer in time
Microsoft allows one second for the whole exchange and treats a late answer as no answer, at which point Set error behavior decides. Its default is to run the tool.
Beak holds evaluation to its own shorter budget and answers this setting on breach, because an answer Beak chooses always beats a timeout it suffers. Set it to match the customer's Set error behavior: if the two disagree, a slow moment produces one answer while their configuration expects the other.
Note: A timeout is applied even while observing. Observe mode exists to suppress false positives from policy, and a timeout means no policy decision was reached at all — so this setting takes effect either way.
Roll out in stages
Copilot Studio has no shadow mode of its own, so Beak provides one and it is on by default. Use it. The blast radius of a false positive here is not a warning banner — it is an agent refusing to complete a task the user asked for.
- Observe, error behavior = Allow — Beak records would-be blocks and blocks nothing. Review the Audit Log and tune the policy until the would-be blocks are ones you would stand behind.
- Enforce, error behavior = Allow — Beak now blocks. A Beak outage degrades to unprotected rather than broken.
- Enforce, error behavior = Block — only once you are satisfied with both the block rate and Beak's response times.
Each stage is a per-tenant setting and can be changed at any time.
Changing the configuration later
Everything registered in Step 1 stays editable, and the endpoint URL is unaffected by any of it — so the customer never has to redo Entra or Power Platform for these:
- Directory (tenant) ID and Application (client) ID — fix a typo, or re-point the endpoint at a different Entra application.
- Name, Policy, Power Platform environments, and all three verdict settings.
Two actions are different:
- Disable integration stops Beak forming an opinion. Copilot Studio keeps calling the endpoint and, because the protocol fails open, tool calls run unchecked — with no error shown to the customer. Prefer switching to observe mode if the intent is to stop blocking rather than to stop protecting.
- Rotate endpoint URL mints a new URL and breaks the customer's Entra configuration. Copilot Studio can no longer obtain a token and their agents resume invoking tools unchecked, silently. Recovery needs both the federated credential subject in Entra and the Endpoint link in Power Platform updated. Treat it as a coordinated change with the customer, not a maintenance action.
Best Practices
- Register in Beak before the customer saves in Power Platform. The save fails otherwise, and the error does not explain why.
- Copy the onboarding strings; never retype them. Beak computes the encoded subject precisely because hand-encoding it usually produces a value that looks right and never matches.
- Confirm a real tool call reaches the Audit Log before calling the setup done. A successful Save proves reachability, not that verdicts are flowing.
- Keep the timeout setting in step with Set error behavior, and revisit it if the customer changes theirs.
- Add environment setup to whatever process creates Power Platform environments. Coverage decays quietly as the estate grows, because new environments are unprotected by default.
- Stay in observe mode until the would-be blocks look right. Moving straight to enforcement puts a false positive in front of a user as a refused task.
Related Pages
- Microsoft Copilot Studio — what the control does, what it sees, and how a block appears to a user
- Policies — where the rules that block a tool call are defined
- Audit Log — every evaluation, and the detail behind each block
- Threat Dashboard — live view of runtime protection