Skip to main content
Back to blog
Product

Microsoft integrations: Entra ID, Intune, and the device agent

Speakeasy Team

Speakeasy Team

Published · 6 min read

Microsoft integrations: Entra ID, Intune, and the device agent

Speakeasy now integrates with the Microsoft stack end to end. Every AI agent session authenticates through Microsoft Entra ID, the Speakeasy Device Agent deploys through Microsoft Intune on Windows and macOS, and fleet coverage is verified against your real Intune inventory. Speakeasy is also available on the Microsoft commercial marketplace.

For a Microsoft shop, this means AI governance runs on the infrastructure you already operate. Entra ID stays the source of truth for who people are and what they can touch. Intune stays the way software reaches devices. Speakeasy adds the layer neither was built for: Zero Trust AI governance with policy, attribution, and an audit trail on what AI agents do.

Entra ID for every agent action: SAML, OIDC, conditional access, and SCIM sync

Speakeasy federates sign-in to your identity provider. When you connect Entra ID over SAML or OIDC, users authenticate on your sign-in screen under your policies: MFA, device trust, and conditional access all apply, because Entra is doing the authenticating. The whole exchange runs synchronously on every sign-in, typically in about 500ms.

Directory Sync keeps membership current over SCIM. When an admin adds a user, removes one, or changes a group in Entra, the change synchronizes to Speakeasy, with exactly-once semantics: a member’s account exists before their first sign-in, and group membership maps to Control Plane roles so access follows your org chart. When someone leaves, deprovisioning in Entra ends their agent access with their account.

The result for governance is that every session an employee starts in Claude Code, Codex, Cursor, or OpenCode is tied to a directory identity. Policy is evaluated per person on every tool call, every allow-or-deny decision is logged under a real name, and there are no shared service accounts anywhere in the path.

Deploy the device agent through Intune: Managed configuration and policy enforcement

The Speakeasy Device Agent is the on-device half of governance. It installs your organization’s mandated configuration (MCP servers, plugins, and telemetry settings each AI tool should have) into each tool’s native settings. The agent re-applies this configuration every 60 seconds so it survives tool updates, settings resets, and account switches, and reports coverage back to the platform.

Intune distributes the device agent as a Win32 app on Windows or a line-of-business package on macOS, delivering managed configuration to enrolled devices.

Windows deployment: Intune Win32 app with LocalSystem service

The agent ships as a per-machine, Authenticode-signed .msi that installs the daemon, CLI, and UI under C:\Program Files\Speakeasy\ and registers the daemon as a LocalSystem service.

To deploy, add it as a Win32 app or line-of-business MSI under Devices → Apps, with this install command:

msiexec /i speakeasy-agent_<version>.msi /qn /norestart

Detection works from the MSI’s own UpgradeCode, so there is no custom detection rule to maintain.

Running as LocalSystem gives Windows fleets stronger tamper resistance than most endpoint agents, because standard users cannot stop the service. It also means managed-layer enforcement needs nothing extra.

When you mark a tool as managed, the agent writes its system-level configuration in-process:

  • %ProgramData%\ClaudeCode\managed-settings.json for Claude Code
  • %ProgramData%\OpenAI\Codex\requirements.toml for Codex
  • %ProgramData%\Cursor\hooks.json for Cursor

Each file is SYSTEM-owned with a protected ACL.

The managed configuration itself is a JSON file at %ProgramData%\Speakeasy\managed.json, delivered by a PowerShell script or a second Win32 payload, with the org token passed as a script parameter rather than a literal in the script body. Version moves are an MSI re-push. The MajorUpgrade stops the service, replaces the files, and starts it again.

macOS deployment: Code-signed .pkg with auto-update and LaunchAgent

The agent is a single Developer ID signed, notarized, universal .pkg that installs the daemon, CLI, menu bar app, and privileged helper together and registers its own LaunchAgents.

To deploy, add it as a macOS line-of-business app under Devices → Apps; the Intune app model checks the package receipt, so detection again needs no custom rule.

Settings arrive as a configuration profile carrying a Custom Settings payload on the com.speakeasy.agent preferences domain. Every Mac comes up enrolled with zero user interaction and no browser sign-in.

Once installed, the agent’s signed, checksum-verified auto-update keeps the daemon, CLI, and app current on its own, with automatic rollback if an update fails to start.

Verify device coverage against your Intune inventory

Deploying tells you what Intune pushed, but it doesn’t tell you what’s running. The inventory integration closes that gap through Microsoft Graph with a scope-limited app registration: one application permission, DeviceManagementManagedDevices.Read.All, with admin consent, and nothing else. You enter the tenant ID, client ID, and client secret in Device Agent → MDM Integrations; credentials are stored encrypted and never shown again. Connections follow a save, test, then enable flow, and start paused so invalid credentials never generate failed syncs.

Once enabled, Speakeasy pulls the managed-device inventory hourly and joins it against the agent’s own heartbeats. Each device’s Intune-recorded email address (falling back to the user principal name) attributes it to a person, and every managed device lands in exactly one coverage state:

StateMeaning
Agent activeThe assigned user’s device agent reported a heartbeat within the active window.
Agent staleThe agent has gone silent while Intune still sees the device checking in. Worth investigating.
No agentThe assigned user has never reported an agent heartbeat. Your deployment queue.
No email in MDMThe device record has no assigned user, so coverage can’t be attested.

During a rollout, the two lists an admin works are No agent (deploy to these) and Agent stale (the agent was running and stopped; find out why).

The same coverage exports to Drata or Vanta as continuously tested compliance evidence: one record per managed device carrying serial, hostname, assigned user, and agent status, replaced as a complete snapshot on every push so departed devices drop out and retries never duplicate records.

Enterprise AI governance on the Microsoft stack: Policy, compliance, and attribution

  • Rollout is a package push and a configuration profile, with nothing to script and no custom detection rules on either platform.
  • Access control remains in your existing infrastructure: Entra groups map to roles, conditional access applies at sign-in, and offboarding follows your existing leaver process.
  • Security gets attribution: every AI session and tool call under a directory identity, scanned in flight, with shadow MCP servers surfaced and policy enforced per action.
  • Compliance gets per-device evidence that the control is running, not just that it was deployed, across your Intune-managed fleet.

Speakeasy runs alongside the rest of the Microsoft integration surface: Jamf Pro and Iru (formerly Kandji) are supported the same way for Apple-first fleets, documented in the same MDM installations guide.

Deploy AI governance with Entra ID and Intune: Implementation guide

Speakeasy is live on the Microsoft commercial marketplace. The Intune deployment guide covers the MSI, the pkg, the configuration profile, and the Graph inventory connection step by step, and identity setup covers connecting Entra ID for SSO and Directory Sync. The full list of supported AI clients, gateways, MDMs, and compliance platforms lives in the integrations directory.


Rolling out AI governance across a Microsoft shop? Book time with our team and we’ll walk through it with you.

AI everywhere.

Control here.