Skip to main content
Microsoft Copilot Studio is a low-code Power Platform service used to build conversational agents. Makers define instructions, add knowledge sources and tools, and publish agents to Teams, websites, or Microsoft 365. Microsoft hosts model execution, so nothing of ours sits in the data path. There are two integration points, and they solve different problems:

NeuralTrust controls

Threat detection cannot redact. Copilot Studio’s contract accepts a single boolean decision, so there is no field in which to return rewritten content. A Transform rule produces no masking on this path — use Block when content must not reach the tool. Redaction is available only on the TrustGate MCP path, where TrustGuard owns the payload.

Scope

Threat detection covers Copilot Studio agents that use generative orchestration. It does not cover Microsoft 365 Copilot in Word, Teams or Outlook, which exposes no hook to third parties.

Deployment options

The two paths are independent. Threat detection screens every tool the agent runs, whatever its source; TrustGate MCP governs only the tools it publishes.

Set up threat detection (TrustGuard)

Microsoft calls TrustGuard, so nothing is deployed and nothing is proxied. Authentication uses an Entra federated identity credential — there is no shared secret and no API key on this path. Setup spans three places: the collector’s Connection tab, your Entra app registration, and Power Platform admin center. The Connection tab produces every value the other two ask for.

Before you start

1. Copy the threat detection endpoint

Open the collector and read the Connection tab. The Threat detection endpoint is unique to this collector:
One endpoint per collector, never shared. The federated credential binds this exact URL, so if the endpoint changes the credential stops matching.

2. Register an application in Microsoft Entra ID

In Microsoft Entra ID → App registrations, create a single-tenant application. Copy two values:

3. Store the tenant and application IDs on the collector

Back on the Connection tab, paste both values and press Save. Separate several Application IDs with commas if more than one application will call. The status changes from Waiting for your tenant and application to Ready.
Deliveries are refused until both values are stored. TrustGuard checks the caller’s application against this allowlist on every request, so an unsaved collector rejects Microsoft’s calls with 401.

4. Add the federated identity credential

The Connection tab now shows a Federated credential subject identifier. Copy it. In your Entra app registration, open Certificates & secrets → Federated credentials → Add credential and fill the form:
Never build the subject identifier by hand. It encodes your tenant and the exact endpoint URL, and the tenant GUID is not written as a GUID — it is re-ordered into .NET byte order and base64url-encoded. A subject assembled by hand from the tenant ID looks entirely reasonable, Entra accepts it without complaint, and it never matches an incoming token. Always copy the value the Connection tab computes, and copy it again if you change the endpoint.

5. Turn on threat detection in Power Platform admin center

Open the environment → SecurityThreat detection, then enter the endpoint from step 1 and the Application (client) ID from step 2. Power Platform admin center also asks what should happen when TrustGuard cannot answer in time.
Microsoft’s default is to let the agent respond. If a missed verdict should stop the tool rather than wave it through, choose to block the query instead. TrustGuard answers within a 700 ms budget because Copilot Studio waits 1000 ms and treats a slower answer as no answer.
Pressing Save makes Power Platform call the collector’s readiness probe. A healthy collector answers {"isSuccessful": true, "status": "OK"}.

6. Assign a policy

On the collector’s Policies tab, assign a default policy. Start it in Observe so findings are recorded without stopping any tool, check Agent Runtime → Activity, then switch to Enforce.
A collector with no matching policy is unguarded: TrustGuard allows every tool and inspects nothing.

Set up governed tool access (TrustGate)

Before you start

Do not configure client credentials manually. TrustGate publishes OAuth metadata and supports Dynamic Client Registration, so Copilot Studio registers itself. If Copilot Studio asks for a Client ID or Client secret, confirm that authentication is set to Dynamic discovery and that the server URL is the endpoint copied from Connect.

1. Create the MCP consumer

In Agent GatewayConsumers, create a consumer with protocol MCP and auth OAuth2, bind the registries and toolkit you want the agent to have, then copy the URL from the Connect tab:
Authentication options. The Copilot Studio configuration is the same for both options; only the consumer configuration changes.
Use an Identity-based consumer when different people should see different tools. The caller’s identity selects the roles, which determine the registries and toolkit available to that caller.

2. Add the MCP tool in Copilot Studio

  1. Create a tool → MCP.
  2. Set Authentication → OAuthDynamic discovery.
  3. Paste the consumer URL from step 1 as the server URL. Leave the defaults. If Power Automate opens, no changes are needed there.

3. Build the agent and activate the connection

  1. Create an agent and add the MCP Server tool from step 2.
  2. On the first run, activate every connection when prompted, including the MCP Server itself.
  3. Complete the NeuralTrust or IdP login if prompted. If an upstream registry uses OAuth (forwarded) and the user has not connected it, the first tool call returns a connection link. After authorization, TrustGate stores and refreshes the credential.

4. Verify

  1. Submit a request that invokes a tool from a bound registry.
  2. Confirm the agent lists only the tools granted by the consumer’s toolkit.
  3. Confirm the call in TrustGate telemetry. See Metrics.

Optional: inspect tool calls and results

The preceding steps configure an access-only connection. To evaluate the content of MCP traffic with TrustGuard:
  1. Follow the TrustGate integration to create a TrustGate collector and assign a TrustGuard runtime policy. Add Input rules for tool calls and Output rules for tool results. Start in Observe mode.
  2. In Agent GatewayPoliciesCatalog, add TrustGuard. Select the collector, set direction to request_response, and target the Copilot Studio consumer. Keep the guardrail in Observe while testing.
  3. Invoke a tool and confirm the input and output decisions in TrustGuard Activity.
  4. After reviewing the decisions, switch the runtime policy and guardrail to Enforce.
In Observe mode, findings are recorded without blocking or rewriting traffic. If a transform cannot be applied safely in Enforce mode, TrustGate blocks instead of forwarding unmasked content. Redaction applies to DLP outcomes only.

Reference

Coverage

Microsoft hosts model execution, so neither path evaluates the agent’s prompts or model responses. What each one sees:

What threat detection covers

Microsoft decides what any third party can see here, not us. Copilot Studio exposes exactly one hook to an external security provider: the call immediately before a tool runs. Everything else — how the model is prompted, how instructions shape behaviour, what the platform remembers between turns — happens inside Microsoft’s service, where no third party can observe or intervene. That is a property of the platform, not a limit of TrustGuard, and it applies identically to every vendor in this position. What that single hook gives you is broad: if the platform orchestrates something as a tool execution, it reaches TrustGuard, whatever built it and wherever the tool came from. Threat detection sees what the agent does, not what it says or how it was built. In short: actions are covered; the conversation and the configuration stay inside Microsoft’s platform.
A prompt on its own is never evaluated on this path. If someone types a jailbreak into the chat, threat detection does not see it — it only sees that text if it ends up in the arguments of a tool the agent then runs. To evaluate prompts and model responses you need a collector that sits on the model call, which Copilot Studio does not offer to third parties. Screening prompts on this platform is not something a security vendor can choose to add — Microsoft would have to expose the hook first.
Coverage follows the platform’s own orchestration, not a list we maintain. To confirm what a specific agent produces, run it in Observe and read Agent Runtime → Activity: every tool execution that reached TrustGuard appears there, so the findings are the authoritative answer for your agent.

What Copilot Studio sends to threat detection

Each delivery carries the planner context (the user message, chat history, the model’s thought, and previous tool outputs), the definition of the tool about to run with its input and output parameters, the input values being passed to it, and conversation metadata — agent, user, trigger, conversation and message ids, channel, and the incoming client IP. Every field is treated as optional, so a Copilot Studio API version that adds or drops one does not break evaluation.

The verdict contract

Threat detection answers with a single decision:
A block adds the reason Copilot Studio surfaces to the maker:
blockAction is the whole contract. That is why this path cannot redact: there is no field in which to return rewritten content.

Failure behavior

MCP tool coverage in detail

Limits. TrustGuard inspects text tool content routed through TrustGate. It does not inspect non-text image, audio, or resource content blocks. To limit call frequency, attach the Per-Tool Rate Limiter policy. The Tool Injection policy applies only to LLM traffic and does not affect MCP.

Configuration

MCP endpoint. Each MCP consumer has a streamable-http endpoint. The agent receives the merged catalog from the registries assigned to that consumer:
The slug is the first path segment on the consumer’s proxy URL, and the path must end in /mcp. Copy the URL from the Connect tab instead of assembling it manually. Agent authentication. TrustGate acts as an OAuth2 authorization server for connecting agents and supports Dynamic discovery: The consumer configuration determines which IdP handles the login. See Auth. Upstream authentication is separate. Authenticating Copilot Studio to TrustGate is not the same as authenticating TrustGate to the MCP servers behind it. Configure the latter with mcp_target.auth.mode on the registry: none, static, client_credentials, passthrough, exchange or forwarded. forwarded requires the user to provide consent on first use. Tool names. Unique names pass through unchanged; a collision is prefixed with the registry name (asana_create_task). Use the name shown to the agent when configuring tool restrictions. Fail mode. fail_mode on the consumer decides what happens when an upstream server is unavailable. open skips the failed server; closed fails the call. For role-based consumers the effective mode is open only when every contributing role declares it open.

Troubleshooting