Use this skill when reviewing M365 conditional access policies and named locations through CIPP — auditing CA coverage, finding policies that exclude critical apps, listing trusted IP ranges, identifying tenants without baseline conditional access. Read-only surface focused on security posture review.
Scanned 5/27/2026
Install via CLI
openskills install wyre-technology/msp-claude-plugins---
name: "cipp-security"
description: "Use this skill when reviewing M365 conditional access policies and named locations through CIPP — auditing CA coverage, finding policies that exclude critical apps, listing trusted IP ranges, identifying tenants without baseline conditional access. Read-only surface focused on security posture review."
when_to_use: "When auditing conditional access policies or named locations across managed tenants for security posture review"
triggers:
- conditional access
- ca policy
- named locations
- trusted ips
- cipp security
- mfa enforcement
- security posture
- location based access
---
# CIPP Security — Conditional Access & Named Locations
Read-only access to a tenant's Conditional Access policy graph and named-location list. Use as input to security posture reviews and to detect tenants drifting from MSP baseline policies. CIPP doesn't expose CA write operations through MCP — apply policy changes via CIPP standards or the CIPP UI.
## Tools
### `cipp_list_conditional_access_policies`
```
cipp_list_conditional_access_policies(tenantFilter='contoso.onmicrosoft.com')
```
Returns every CA policy with `displayName`, `state` (`enabled` / `disabled` / `enabledForReportingButNotEnforced`), `conditions` (users, apps, locations, platforms, sign-in risk), and `grantControls` (MFA, compliant device, terms of use, etc).
### `cipp_list_named_locations`
```
cipp_list_named_locations(tenantFilter='contoso.onmicrosoft.com')
```
Returns named locations: IP ranges (trusted/untrusted) and country-based locations. These are the building blocks CA policies reference for location-based controls.
## What to look for in a CA review
| Finding | Why it matters |
|---------|----------------|
| Zero policies in `enabled` state | Tenant has no CA enforcement at all — a baseline `enabledForReportingButNotEnforced` doesn't block anything |
| MFA not required for "All cloud apps" | A baseline policy is missing or scoped too narrowly |
| Policies excluding the entire admin role | Common configuration mistake; admins should require *more* MFA, not less |
| Trusted location includes home/coffee-shop IPs | Named-location bloat creates exception paths for attackers |
| `legacy authentication` not blocked | Basic auth bypasses MFA entirely; should be blocked tenant-wide |
| Reporting-only policies older than 30 days | Should have been promoted to `enabled` or removed |
## Workflow patterns
### Tenant CA baseline check
```
policies = cipp_list_conditional_access_policies(tenantFilter)
enabled = [p for p in policies if p['state'] == 'enabled']
mfa_for_all_apps = any(
p for p in enabled
if 'mfa' in p.get('grantControls', {}).get('builtInControls', [])
and 'All' in p.get('conditions', {}).get('applications', {}).get('includeApplications', [])
)
```
If `mfa_for_all_apps` is false, the tenant lacks the baseline "MFA for everything" policy that every MSP should ship as a standard.
### Portfolio drift detection
Run `cipp_list_conditional_access_policies` per tenant and compare the policy fingerprint (display names + `state` + grant controls) against the MSP's golden baseline. Flag tenants where any baseline policy is missing or disabled.
## Caveats
- CA write operations (create/edit/delete) are not exposed via MCP. Use CIPP standards (`cipp_run_standards_check` and the standards UI) to deploy policy templates across tenants, or do it manually via the CIPP web UI.
- Named locations are a **trust amplifier** — review them as carefully as policies. A misconfigured trusted IP range can quietly exempt entire networks from MFA.
- `enabledForReportingButNotEnforced` looks like coverage in dashboards but enforces nothing. Always check `state == 'enabled'` for actual enforcement.
No comments yet. Be the first to comment!