Security

The AI can propose. Only a human can confirm.

Handoff's core safety property isn't a setting you can turn off or a prompt instruction that could be talked around — it's built into the code path itself.

No function exists for the model to mutate anything.

Claude, the model behind Pip, is only ever given read-only "propose a plan" tools. There is no tool in its toolset that changes a Microsoft 365 account, licence, or permission. The only way a change happens is a signed-in human clicking Confirm on a plan card, which hits a plain authenticated REST endpoint that has no connection to the AI conversation loop. This is a structural guarantee, not a policy — there's no phrasing or prompt injection that reaches a code path that doesn't exist.

Every job runs in its own process, then is destroyed.

Confirmed plans execute via real PowerShell against the Microsoft Graph and Exchange Online APIs — one process per job. That process is torn down after exactly one job completes; it is never reused across a different tenant, so there's no shared execution state for a bug to leak between customers.

One organisation's data doesn't leak into another's.

Every database read and write is scoped to your organisation. Access tokens for your Microsoft 365 tenant are minted per-request via a Key Vault–signed client assertion and never shared across organisations.

The ordinary web-security basics, actually in place.

Rate limiting
Login, invitations, and every chat message to Pip are rate-limited per user and per organisation — checked before anything reaches the AI model or the database.
Security headers
Content-Security-Policy, HSTS, X-Content-Type-Options, Referrer-Policy, and Permissions-Policy are set on every response, page and API alike.
Full audit trail
Every confirmed plan and every execution result is written to an audit log — visible in plain English on the History page, not buried in a raw event dump.
Report-only by default
Anything with real lockout risk — a new Conditional Access policy, for instance — is always created in report-only mode first. Enforcing it is a separate, deliberate, human-confirmed step.

You control exactly what Handoff can see.

Connecting your Microsoft 365 tenant goes through Microsoft's own consent screen, where you (or your Global Admin) approve exactly the permissions Handoff requests — nothing is granted silently, and the connection can be revoked from Settings at any time.

Questions about a specific security requirement?

Read the FAQ